@getlupa/vue 0.7.2 → 0.7.4
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/dist/lupaSearch.js +140 -146
- package/dist/lupaSearch.mjs +140 -146
- package/dist/src/chat/ChatService.d.ts +4 -19
- package/dist/src/components/search-box/products/SearchBoxProducts.vue.d.ts +4 -2
- package/dist/src/stores/params.d.ts +18 -3
- package/dist/src/types/chat/SearchChatRequest.d.ts +16 -2
- package/dist/src/types/search-box/Common.d.ts +1 -0
- package/package.json +1 -1
package/dist/lupaSearch.js
CHANGED
|
@@ -1928,21 +1928,21 @@ const sendUaAnalyticsEvent = (data, options) => {
|
|
|
1928
1928
|
);
|
|
1929
1929
|
};
|
|
1930
1930
|
const sendGa4AnalyticsEvent = (data, options) => {
|
|
1931
|
-
var _a, _b, _c, _d, _e;
|
|
1931
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
1932
1932
|
if (!window || !window.dataLayer) {
|
|
1933
1933
|
console.error("dataLayer object not found.");
|
|
1934
1934
|
return;
|
|
1935
1935
|
}
|
|
1936
1936
|
const sendItemTitle = data.searchQuery !== ((_a = data.analytics) == null ? void 0 : _a.label);
|
|
1937
1937
|
const title = sendItemTitle ? (_b = data.analytics) == null ? void 0 : _b.label : void 0;
|
|
1938
|
-
const params = {
|
|
1938
|
+
const params = __spreadValues({
|
|
1939
1939
|
search_text: data.searchQuery,
|
|
1940
1940
|
item_title: title,
|
|
1941
1941
|
item_id: data.itemId,
|
|
1942
1942
|
ecommerce: parseEcommerceData(data, (_c = data.analytics) == null ? void 0 : _c.listLabel)
|
|
1943
|
-
};
|
|
1943
|
+
}, (_e = (_d = data.analytics) == null ? void 0 : _d.additionalParams) != null ? _e : {});
|
|
1944
1944
|
window.dataLayer.push(__spreadValues({
|
|
1945
|
-
event: (
|
|
1945
|
+
event: (_g = (_f = data.analytics) == null ? void 0 : _f.type) != null ? _g : options.parentEventName
|
|
1946
1946
|
}, params));
|
|
1947
1947
|
};
|
|
1948
1948
|
const processDebugEvent = (data) => {
|
|
@@ -2785,6 +2785,10 @@ const useParamsStore = defineStore("params", () => {
|
|
|
2785
2785
|
const searchString = vue.ref("");
|
|
2786
2786
|
const optionsStore = useOptionsStore();
|
|
2787
2787
|
const redirectionStore = useRedirectionStore();
|
|
2788
|
+
const sortParams = vue.ref({
|
|
2789
|
+
selectedSortKey: "",
|
|
2790
|
+
previousSortKey: ""
|
|
2791
|
+
});
|
|
2788
2792
|
const query = vue.computed(() => params.value[QUERY_PARAMS_PARSED.QUERY]);
|
|
2789
2793
|
const page = vue.computed(() => {
|
|
2790
2794
|
const page2 = Number(params.value[QUERY_PARAMS_PARSED.PAGE]) || 1;
|
|
@@ -2919,6 +2923,12 @@ const useParamsStore = defineStore("params", () => {
|
|
|
2919
2923
|
}
|
|
2920
2924
|
searchResultsLink.value = newSearchResultsLink;
|
|
2921
2925
|
};
|
|
2926
|
+
const setSortSettings = ({ selectedSortKey, previousSortKey }) => {
|
|
2927
|
+
sortParams.value = {
|
|
2928
|
+
selectedSortKey,
|
|
2929
|
+
previousSortKey
|
|
2930
|
+
};
|
|
2931
|
+
};
|
|
2922
2932
|
return {
|
|
2923
2933
|
params,
|
|
2924
2934
|
defaultLimit,
|
|
@@ -2929,6 +2939,7 @@ const useParamsStore = defineStore("params", () => {
|
|
|
2929
2939
|
limit,
|
|
2930
2940
|
sort,
|
|
2931
2941
|
filters,
|
|
2942
|
+
sortParams,
|
|
2932
2943
|
add,
|
|
2933
2944
|
removeAllFilters,
|
|
2934
2945
|
removeParameters,
|
|
@@ -2936,7 +2947,8 @@ const useParamsStore = defineStore("params", () => {
|
|
|
2936
2947
|
goToResults,
|
|
2937
2948
|
appendParams,
|
|
2938
2949
|
setDefaultLimit,
|
|
2939
|
-
setSearchResultsLink
|
|
2950
|
+
setSearchResultsLink,
|
|
2951
|
+
setSortSettings
|
|
2940
2952
|
};
|
|
2941
2953
|
});
|
|
2942
2954
|
const flattenFacet = (key, facets, suggestion, inputValue) => {
|
|
@@ -4245,61 +4257,6 @@ const _sfc_main$13 = /* @__PURE__ */ vue.defineComponent(__spreadProps(__spreadV
|
|
|
4245
4257
|
};
|
|
4246
4258
|
}
|
|
4247
4259
|
}));
|
|
4248
|
-
const getSearchTrackingData = (searchText, type) => {
|
|
4249
|
-
return {
|
|
4250
|
-
searchQuery: searchText,
|
|
4251
|
-
analytics: {
|
|
4252
|
-
type,
|
|
4253
|
-
label: searchText
|
|
4254
|
-
}
|
|
4255
|
-
};
|
|
4256
|
-
};
|
|
4257
|
-
const useTrackingStore = defineStore("tracking", () => {
|
|
4258
|
-
const optionsStore = useOptionsStore();
|
|
4259
|
-
const trackSearch = ({
|
|
4260
|
-
queryKey,
|
|
4261
|
-
query,
|
|
4262
|
-
type = "search_query"
|
|
4263
|
-
}) => {
|
|
4264
|
-
var _a, _b;
|
|
4265
|
-
const options = (_a = optionsStore.envOptions) != null ? _a : { environment: "production" };
|
|
4266
|
-
const hasFilters = Object.keys((_b = query.filters) != null ? _b : {}).length > 0;
|
|
4267
|
-
if (hasFilters) {
|
|
4268
|
-
const data2 = getSearchTrackingData(query.searchText, "search_filters");
|
|
4269
|
-
track(queryKey, data2, options);
|
|
4270
|
-
return;
|
|
4271
|
-
}
|
|
4272
|
-
const data = getSearchTrackingData(query.searchText, type);
|
|
4273
|
-
track(queryKey, data, options);
|
|
4274
|
-
};
|
|
4275
|
-
const trackResults = ({
|
|
4276
|
-
queryKey,
|
|
4277
|
-
results
|
|
4278
|
-
}) => {
|
|
4279
|
-
var _a;
|
|
4280
|
-
const options = (_a = optionsStore.envOptions) != null ? _a : { environment: "production" };
|
|
4281
|
-
if (results.total > 0) {
|
|
4282
|
-
return;
|
|
4283
|
-
}
|
|
4284
|
-
const data = getSearchTrackingData(results.searchText, "search_zero_results");
|
|
4285
|
-
track(queryKey, data, options);
|
|
4286
|
-
};
|
|
4287
|
-
const trackEvent = ({ queryKey, data }) => {
|
|
4288
|
-
var _a, _b, _c, _d, _e;
|
|
4289
|
-
const options = (_a = optionsStore.envOptions) != null ? _a : { environment: "production" };
|
|
4290
|
-
const trackingOptions = (_b = optionsStore.trackingOptions) != null ? _b : {};
|
|
4291
|
-
const items = (_d = (_c = data.analytics) == null ? void 0 : _c.items) != null ? _d : [];
|
|
4292
|
-
const mappedItems = ((_e = trackingOptions.analytics) == null ? void 0 : _e.itemMap) ? items.map(trackingOptions.analytics.itemMap) : items;
|
|
4293
|
-
track(
|
|
4294
|
-
queryKey,
|
|
4295
|
-
__spreadProps(__spreadValues({}, data), {
|
|
4296
|
-
analytics: data.analytics ? __spreadProps(__spreadValues({}, data.analytics), { items: mappedItems }) : void 0
|
|
4297
|
-
}),
|
|
4298
|
-
options
|
|
4299
|
-
);
|
|
4300
|
-
};
|
|
4301
|
-
return { trackSearch, trackResults, trackEvent };
|
|
4302
|
-
});
|
|
4303
4260
|
const _hoisted_1$_ = ["href"];
|
|
4304
4261
|
const _hoisted_2$I = { class: "lupa-search-box-product-image-section" };
|
|
4305
4262
|
const _hoisted_3$x = { class: "lupa-search-box-product-details-section" };
|
|
@@ -4319,11 +4276,7 @@ const _sfc_main$12 = /* @__PURE__ */ vue.defineComponent({
|
|
|
4319
4276
|
emits: ["product-click"],
|
|
4320
4277
|
setup(__props, { emit }) {
|
|
4321
4278
|
const props = __props;
|
|
4322
|
-
const historyStore = useHistoryStore();
|
|
4323
|
-
const trackingStore = useTrackingStore();
|
|
4324
|
-
const optionsStore = useOptionsStore();
|
|
4325
4279
|
const isInStock = vue.ref(true);
|
|
4326
|
-
const { boxRoutingBehavior } = storeToRefs(optionsStore);
|
|
4327
4280
|
const link = vue.computed(() => {
|
|
4328
4281
|
var _a, _b;
|
|
4329
4282
|
return generateLink((_b = (_a = props.panelOptions.links) == null ? void 0 : _a.details) != null ? _b : "", props.item);
|
|
@@ -4338,54 +4291,16 @@ const _sfc_main$12 = /* @__PURE__ */ vue.defineComponent({
|
|
|
4338
4291
|
(e) => e.type !== DocumentElementType.IMAGE && e.type !== DocumentElementType.ADDTOCART
|
|
4339
4292
|
)) != null ? _b : [];
|
|
4340
4293
|
});
|
|
4341
|
-
const id = vue.computed(() => {
|
|
4342
|
-
if (props.panelOptions.idKey) {
|
|
4343
|
-
return props.item[props.panelOptions.idKey];
|
|
4344
|
-
}
|
|
4345
|
-
return "";
|
|
4346
|
-
});
|
|
4347
|
-
const title = vue.computed(() => {
|
|
4348
|
-
if (!props.panelOptions.titleKey) {
|
|
4349
|
-
return "";
|
|
4350
|
-
}
|
|
4351
|
-
const title2 = props.item[props.panelOptions.titleKey] || "";
|
|
4352
|
-
historyStore.add({
|
|
4353
|
-
item: title2
|
|
4354
|
-
});
|
|
4355
|
-
return title2;
|
|
4356
|
-
});
|
|
4357
4294
|
const addToCartElement = vue.computed(() => {
|
|
4358
4295
|
var _a;
|
|
4359
4296
|
return (_a = props.panelOptions.elements) == null ? void 0 : _a.find((e) => e.type === DocumentElementType.ADDTOCART);
|
|
4360
4297
|
});
|
|
4361
4298
|
const handleClick = (event) => {
|
|
4362
|
-
|
|
4363
|
-
|
|
4364
|
-
|
|
4365
|
-
|
|
4366
|
-
});
|
|
4367
|
-
}
|
|
4368
|
-
if (!props.panelOptions.idKey) {
|
|
4369
|
-
return;
|
|
4370
|
-
}
|
|
4371
|
-
trackingStore.trackEvent({
|
|
4372
|
-
queryKey: props.panelOptions.queryKey,
|
|
4373
|
-
data: {
|
|
4374
|
-
itemId: id.value,
|
|
4375
|
-
searchQuery: props.inputValue,
|
|
4376
|
-
type: "itemClick",
|
|
4377
|
-
analytics: {
|
|
4378
|
-
type: "autocomplete_product_click",
|
|
4379
|
-
label: (_a = title.value) != null ? _a : link.value,
|
|
4380
|
-
items: [props.item]
|
|
4381
|
-
}
|
|
4382
|
-
}
|
|
4299
|
+
emit("product-click", {
|
|
4300
|
+
item: props.item,
|
|
4301
|
+
eventType: "itemClick",
|
|
4302
|
+
event
|
|
4383
4303
|
});
|
|
4384
|
-
if (!link.value) {
|
|
4385
|
-
return;
|
|
4386
|
-
}
|
|
4387
|
-
emit("product-click");
|
|
4388
|
-
handleRoutingEvent(link.value, event, boxRoutingBehavior.value === "event");
|
|
4389
4304
|
};
|
|
4390
4305
|
vue.onMounted(() => {
|
|
4391
4306
|
checkIfIsInStock();
|
|
@@ -4438,6 +4353,61 @@ const _sfc_main$12 = /* @__PURE__ */ vue.defineComponent({
|
|
|
4438
4353
|
};
|
|
4439
4354
|
}
|
|
4440
4355
|
});
|
|
4356
|
+
const getSearchTrackingData = (searchText, type) => {
|
|
4357
|
+
return {
|
|
4358
|
+
searchQuery: searchText,
|
|
4359
|
+
analytics: {
|
|
4360
|
+
type,
|
|
4361
|
+
label: searchText
|
|
4362
|
+
}
|
|
4363
|
+
};
|
|
4364
|
+
};
|
|
4365
|
+
const useTrackingStore = defineStore("tracking", () => {
|
|
4366
|
+
const optionsStore = useOptionsStore();
|
|
4367
|
+
const trackSearch = ({
|
|
4368
|
+
queryKey,
|
|
4369
|
+
query,
|
|
4370
|
+
type = "search_query"
|
|
4371
|
+
}) => {
|
|
4372
|
+
var _a, _b;
|
|
4373
|
+
const options = (_a = optionsStore.envOptions) != null ? _a : { environment: "production" };
|
|
4374
|
+
const hasFilters = Object.keys((_b = query.filters) != null ? _b : {}).length > 0;
|
|
4375
|
+
if (hasFilters) {
|
|
4376
|
+
const data2 = getSearchTrackingData(query.searchText, "search_filters");
|
|
4377
|
+
track(queryKey, data2, options);
|
|
4378
|
+
return;
|
|
4379
|
+
}
|
|
4380
|
+
const data = getSearchTrackingData(query.searchText, type);
|
|
4381
|
+
track(queryKey, data, options);
|
|
4382
|
+
};
|
|
4383
|
+
const trackResults = ({
|
|
4384
|
+
queryKey,
|
|
4385
|
+
results
|
|
4386
|
+
}) => {
|
|
4387
|
+
var _a;
|
|
4388
|
+
const options = (_a = optionsStore.envOptions) != null ? _a : { environment: "production" };
|
|
4389
|
+
if (results.total > 0) {
|
|
4390
|
+
return;
|
|
4391
|
+
}
|
|
4392
|
+
const data = getSearchTrackingData(results.searchText, "search_zero_results");
|
|
4393
|
+
track(queryKey, data, options);
|
|
4394
|
+
};
|
|
4395
|
+
const trackEvent = ({ queryKey, data }) => {
|
|
4396
|
+
var _a, _b, _c, _d, _e;
|
|
4397
|
+
const options = (_a = optionsStore.envOptions) != null ? _a : { environment: "production" };
|
|
4398
|
+
const trackingOptions = (_b = optionsStore.trackingOptions) != null ? _b : {};
|
|
4399
|
+
const items = (_d = (_c = data.analytics) == null ? void 0 : _c.items) != null ? _d : [];
|
|
4400
|
+
const mappedItems = ((_e = trackingOptions.analytics) == null ? void 0 : _e.itemMap) ? items.map(trackingOptions.analytics.itemMap) : items;
|
|
4401
|
+
track(
|
|
4402
|
+
queryKey,
|
|
4403
|
+
__spreadProps(__spreadValues({}, data), {
|
|
4404
|
+
analytics: data.analytics ? __spreadProps(__spreadValues({}, data.analytics), { items: mappedItems }) : void 0
|
|
4405
|
+
}),
|
|
4406
|
+
options
|
|
4407
|
+
);
|
|
4408
|
+
};
|
|
4409
|
+
return { trackSearch, trackResults, trackEvent };
|
|
4410
|
+
});
|
|
4441
4411
|
const _hoisted_1$Z = { id: "lupa-search-box-products" };
|
|
4442
4412
|
const _sfc_main$11 = /* @__PURE__ */ vue.defineComponent({
|
|
4443
4413
|
__name: "SearchBoxProducts",
|
|
@@ -4447,9 +4417,14 @@ const _sfc_main$11 = /* @__PURE__ */ vue.defineComponent({
|
|
|
4447
4417
|
panelOptions: {},
|
|
4448
4418
|
labels: {}
|
|
4449
4419
|
},
|
|
4450
|
-
|
|
4420
|
+
emits: ["product-click"],
|
|
4421
|
+
setup(__props, { emit }) {
|
|
4451
4422
|
const props = __props;
|
|
4452
4423
|
const searchBoxStore = useSearchBoxStore();
|
|
4424
|
+
const historyStore = useHistoryStore();
|
|
4425
|
+
const trackingStore = useTrackingStore();
|
|
4426
|
+
const optionsStore = useOptionsStore();
|
|
4427
|
+
const { boxRoutingBehavior } = storeToRefs(optionsStore);
|
|
4453
4428
|
const { highlightedItem } = storeToRefs(searchBoxStore);
|
|
4454
4429
|
const highlightedIndex = vue.computed(() => {
|
|
4455
4430
|
var _a, _b, _c;
|
|
@@ -4458,6 +4433,42 @@ const _sfc_main$11 = /* @__PURE__ */ vue.defineComponent({
|
|
|
4458
4433
|
}
|
|
4459
4434
|
return (_c = (_b = highlightedItem.value) == null ? void 0 : _b.index) != null ? _c : -1;
|
|
4460
4435
|
});
|
|
4436
|
+
const handleProductClick = ({
|
|
4437
|
+
item,
|
|
4438
|
+
eventType,
|
|
4439
|
+
event
|
|
4440
|
+
}) => {
|
|
4441
|
+
var _a, _b;
|
|
4442
|
+
const link = generateLink((_b = (_a = props.panelOptions.links) == null ? void 0 : _a.details) != null ? _b : "", item);
|
|
4443
|
+
const title = props.panelOptions.titleKey ? item[props.panelOptions.titleKey] || "" : "";
|
|
4444
|
+
const id = props.panelOptions.idKey ? item[props.panelOptions.idKey] : "";
|
|
4445
|
+
if (props.panelOptions.titleKey) {
|
|
4446
|
+
historyStore.add({
|
|
4447
|
+
item: item[props.panelOptions.titleKey] || ""
|
|
4448
|
+
});
|
|
4449
|
+
}
|
|
4450
|
+
if (!props.panelOptions.idKey) {
|
|
4451
|
+
return;
|
|
4452
|
+
}
|
|
4453
|
+
trackingStore.trackEvent({
|
|
4454
|
+
queryKey: props.panelOptions.queryKey,
|
|
4455
|
+
data: {
|
|
4456
|
+
itemId: id,
|
|
4457
|
+
searchQuery: props.inputValue,
|
|
4458
|
+
type: eventType || "itemClick",
|
|
4459
|
+
analytics: {
|
|
4460
|
+
type: "autocomplete_product_click",
|
|
4461
|
+
label: title != null ? title : link,
|
|
4462
|
+
items: [item]
|
|
4463
|
+
}
|
|
4464
|
+
}
|
|
4465
|
+
});
|
|
4466
|
+
if (!link) {
|
|
4467
|
+
return;
|
|
4468
|
+
}
|
|
4469
|
+
emit("product-click");
|
|
4470
|
+
handleRoutingEvent(link, event, boxRoutingBehavior.value === "event");
|
|
4471
|
+
};
|
|
4461
4472
|
return (_ctx, _cache) => {
|
|
4462
4473
|
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$Z, [
|
|
4463
4474
|
_ctx.$slots.productCard ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(_ctx.items, (item, index) => {
|
|
@@ -4468,7 +4479,7 @@ const _sfc_main$11 = /* @__PURE__ */ vue.defineComponent({
|
|
|
4468
4479
|
labels: _ctx.labels,
|
|
4469
4480
|
highlighted: index === highlightedIndex.value,
|
|
4470
4481
|
inputValue: _ctx.inputValue,
|
|
4471
|
-
|
|
4482
|
+
itemClicked: handleProductClick
|
|
4472
4483
|
});
|
|
4473
4484
|
}), 128)) : (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 1 }, vue.renderList(_ctx.items, (item, index) => {
|
|
4474
4485
|
return vue.openBlock(), vue.createBlock(_sfc_main$12, {
|
|
@@ -4478,7 +4489,7 @@ const _sfc_main$11 = /* @__PURE__ */ vue.defineComponent({
|
|
|
4478
4489
|
labels: _ctx.labels,
|
|
4479
4490
|
highlighted: index === highlightedIndex.value,
|
|
4480
4491
|
inputValue: _ctx.inputValue,
|
|
4481
|
-
onProductClick:
|
|
4492
|
+
onProductClick: handleProductClick
|
|
4482
4493
|
}, null, 8, ["item", "panelOptions", "labels", "highlighted", "inputValue"]);
|
|
4483
4494
|
}), 128))
|
|
4484
4495
|
]);
|
|
@@ -7830,6 +7841,7 @@ const _sfc_main$D = /* @__PURE__ */ vue.defineComponent({
|
|
|
7830
7841
|
if (!value) {
|
|
7831
7842
|
return;
|
|
7832
7843
|
}
|
|
7844
|
+
paramStore.setSortSettings({ selectedSortKey: value, previousSortKey: previousKey.value });
|
|
7833
7845
|
(_c = (_b = props.callbacks) == null ? void 0 : _b.onSortChange) == null ? void 0 : _c.call(_b, { selectedSortKey: value, previousSortKey: previousKey.value });
|
|
7834
7846
|
paramStore.appendParams({
|
|
7835
7847
|
params: [{ name: QUERY_PARAMS.SORT, value }],
|
|
@@ -9536,7 +9548,7 @@ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
|
|
|
9536
9548
|
return (_a = props.initialFilters) != null ? _a : {};
|
|
9537
9549
|
});
|
|
9538
9550
|
const { currentQueryText, hasResults, currentFilterCount } = storeToRefs(searchResultStore);
|
|
9539
|
-
const { searchString } = storeToRefs(paramStore);
|
|
9551
|
+
const { searchString, sortParams } = storeToRefs(paramStore);
|
|
9540
9552
|
const { defaultSearchResultPageSize } = storeToRefs(optionStore);
|
|
9541
9553
|
const searchResultsFilters = vue.ref(null);
|
|
9542
9554
|
const mounted = vue.ref(false);
|
|
@@ -9573,6 +9585,7 @@ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
|
|
|
9573
9585
|
window.removeEventListener("popstate", handlePopState);
|
|
9574
9586
|
});
|
|
9575
9587
|
const trackItemListView = (title, items = []) => {
|
|
9588
|
+
var _a, _b;
|
|
9576
9589
|
trackingStore.trackEvent({
|
|
9577
9590
|
queryKey: props.options.queryKey,
|
|
9578
9591
|
data: {
|
|
@@ -9580,7 +9593,11 @@ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
|
|
|
9580
9593
|
type: "view_item_list",
|
|
9581
9594
|
label: title,
|
|
9582
9595
|
listLabel: title,
|
|
9583
|
-
items
|
|
9596
|
+
items,
|
|
9597
|
+
additionalParams: {
|
|
9598
|
+
previousSortKey: (_a = sortParams.value) == null ? void 0 : _a.previousSortKey,
|
|
9599
|
+
newSortKey: (_b = sortParams.value) == null ? void 0 : _b.selectedSortKey
|
|
9600
|
+
}
|
|
9584
9601
|
},
|
|
9585
9602
|
options: { allowEmptySearchQuery: true }
|
|
9586
9603
|
}
|
|
@@ -16347,7 +16364,7 @@ const suggestSearchChatPhrases = (options, request, chatSettings) => __async(exp
|
|
|
16347
16364
|
return { success: false, errors: [e] };
|
|
16348
16365
|
}
|
|
16349
16366
|
});
|
|
16350
|
-
const suggestPhraseAlternatives = (
|
|
16367
|
+
const suggestPhraseAlternatives = (options, request, chatSettings) => __async(exports, null, function* () {
|
|
16351
16368
|
var _a, _b, _c;
|
|
16352
16369
|
const { environment, customBaseUrl } = options;
|
|
16353
16370
|
const model = (chatSettings == null ? void 0 : chatSettings.model) ? `?model=${chatSettings.model}` : ``;
|
|
@@ -16355,7 +16372,7 @@ const suggestPhraseAlternatives = (_0, _1, _2) => __async(exports, [_0, _1, _2],
|
|
|
16355
16372
|
const res = yield fetch(
|
|
16356
16373
|
`${getApiUrl(environment, customBaseUrl)}chat/phraseAlternatives${model}`,
|
|
16357
16374
|
__spreadProps(__spreadValues({}, defaultConfig), {
|
|
16358
|
-
body: JSON.stringify(
|
|
16375
|
+
body: JSON.stringify(request),
|
|
16359
16376
|
headers: __spreadValues(__spreadValues({}, headers), (_a = options.customHeaders) != null ? _a : {})
|
|
16360
16377
|
})
|
|
16361
16378
|
);
|
|
@@ -16371,38 +16388,13 @@ const suggestPhraseAlternatives = (_0, _1, _2) => __async(exports, [_0, _1, _2],
|
|
|
16371
16388
|
return { success: false, errors: [e] };
|
|
16372
16389
|
}
|
|
16373
16390
|
});
|
|
16374
|
-
const
|
|
16375
|
-
var _a, _b, _c;
|
|
16376
|
-
const { environment, customBaseUrl } = options;
|
|
16377
|
-
const model = (chatSettings == null ? void 0 : chatSettings.model) ? `?model=${chatSettings.model}` : ``;
|
|
16378
|
-
try {
|
|
16379
|
-
const res = yield fetch(`${getApiUrl(environment, customBaseUrl)}chat/simplify${model}`, __spreadProps(__spreadValues({}, defaultConfig), {
|
|
16380
|
-
body: JSON.stringify({ phrases }),
|
|
16381
|
-
headers: __spreadValues(__spreadValues({}, headers), (_a = options.customHeaders) != null ? _a : {})
|
|
16382
|
-
}));
|
|
16383
|
-
if (res.status < 400) {
|
|
16384
|
-
const data = yield res.json();
|
|
16385
|
-
return __spreadProps(__spreadValues({}, data), { success: true });
|
|
16386
|
-
}
|
|
16387
|
-
const errors = yield res.json();
|
|
16388
|
-
(_b = options == null ? void 0 : options.onError) == null ? void 0 : _b.call(options, errors);
|
|
16389
|
-
return { success: false, errors };
|
|
16390
|
-
} catch (e) {
|
|
16391
|
-
(_c = options == null ? void 0 : options.onError) == null ? void 0 : _c.call(options, e);
|
|
16392
|
-
return { success: false, errors: [e] };
|
|
16393
|
-
}
|
|
16394
|
-
});
|
|
16395
|
-
const suggestBestProductMatches = (_0, _1, _2) => __async(exports, [_0, _1, _2], function* (options, {
|
|
16396
|
-
initialQuery,
|
|
16397
|
-
productStrings,
|
|
16398
|
-
messageHistory
|
|
16399
|
-
}, chatSettings) {
|
|
16391
|
+
const suggestBestProductMatches = (options, request, chatSettings) => __async(exports, null, function* () {
|
|
16400
16392
|
var _a, _b, _c;
|
|
16401
16393
|
const { environment, customBaseUrl } = options;
|
|
16402
16394
|
const model = (chatSettings == null ? void 0 : chatSettings.model) ? `?model=${chatSettings.model}` : ``;
|
|
16403
16395
|
try {
|
|
16404
16396
|
const res = yield fetch(`${getApiUrl(environment, customBaseUrl)}chat/bestProducts${model}`, __spreadProps(__spreadValues({}, defaultConfig), {
|
|
16405
|
-
body: JSON.stringify(
|
|
16397
|
+
body: JSON.stringify(request),
|
|
16406
16398
|
headers: __spreadValues(__spreadValues({}, headers), (_a = options.customHeaders) != null ? _a : {})
|
|
16407
16399
|
}));
|
|
16408
16400
|
if (res.status < 400) {
|
|
@@ -16438,11 +16430,11 @@ const prepareChatHistory = (chatLog) => {
|
|
|
16438
16430
|
}
|
|
16439
16431
|
return history;
|
|
16440
16432
|
};
|
|
16441
|
-
const getTextResponseChunkStream = (options,
|
|
16433
|
+
const getTextResponseChunkStream = (options, request, onChunkReceived, chatSettings) => {
|
|
16442
16434
|
var _a;
|
|
16443
16435
|
const model = (chatSettings == null ? void 0 : chatSettings.model) ? `?model=${chatSettings.model}` : ``;
|
|
16444
16436
|
fetch(`${getApiUrl(options.environment, options.customBaseUrl)}chat/text${model}`, __spreadProps(__spreadValues({}, defaultConfig), {
|
|
16445
|
-
body: JSON.stringify(
|
|
16437
|
+
body: JSON.stringify(request),
|
|
16446
16438
|
headers: __spreadValues(__spreadValues({}, headers), (_a = options.customHeaders) != null ? _a : {})
|
|
16447
16439
|
})).then((response) => {
|
|
16448
16440
|
const reader = response.body.getReader();
|
|
@@ -16462,7 +16454,6 @@ const getTextResponseChunkStream = (options, { initialQuery, messageHistory }, o
|
|
|
16462
16454
|
const ChatService = {
|
|
16463
16455
|
suggestSearchChatPhrases,
|
|
16464
16456
|
suggestPhraseAlternatives,
|
|
16465
|
-
suggestSimplifiedPhrases,
|
|
16466
16457
|
suggestBestProductMatches,
|
|
16467
16458
|
prepareChatHistory,
|
|
16468
16459
|
getTextResponseChunkStream
|
|
@@ -16584,7 +16575,8 @@ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
|
|
|
16584
16575
|
const { phrases } = yield ChatService.suggestPhraseAlternatives(
|
|
16585
16576
|
props.options.sdkOptions,
|
|
16586
16577
|
{
|
|
16587
|
-
phrases: [props.phrase]
|
|
16578
|
+
phrases: [props.phrase],
|
|
16579
|
+
queryKey: props.options.displayOptions.queryKey
|
|
16588
16580
|
},
|
|
16589
16581
|
props.options.chatSettings
|
|
16590
16582
|
);
|
|
@@ -16657,7 +16649,8 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
|
|
|
16657
16649
|
{
|
|
16658
16650
|
initialQuery: props.entry.userInput,
|
|
16659
16651
|
productStrings: productResultStrings,
|
|
16660
|
-
messageHistory: (_a = props.history) != null ? _a : []
|
|
16652
|
+
messageHistory: (_a = props.history) != null ? _a : [],
|
|
16653
|
+
queryKey: props.options.displayOptions.queryKey
|
|
16661
16654
|
},
|
|
16662
16655
|
props.options.chatSettings
|
|
16663
16656
|
);
|
|
@@ -16731,7 +16724,8 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
|
|
|
16731
16724
|
props.options.sdkOptions,
|
|
16732
16725
|
{
|
|
16733
16726
|
initialQuery: props.content,
|
|
16734
|
-
messageHistory: (_a = props.history) != null ? _a : []
|
|
16727
|
+
messageHistory: (_a = props.history) != null ? _a : [],
|
|
16728
|
+
queryKey: props.options.displayOptions.queryKey
|
|
16735
16729
|
},
|
|
16736
16730
|
processChunk,
|
|
16737
16731
|
props.options.chatSettings
|
package/dist/lupaSearch.mjs
CHANGED
|
@@ -1926,21 +1926,21 @@ const sendUaAnalyticsEvent = (data, options) => {
|
|
|
1926
1926
|
);
|
|
1927
1927
|
};
|
|
1928
1928
|
const sendGa4AnalyticsEvent = (data, options) => {
|
|
1929
|
-
var _a, _b, _c, _d, _e;
|
|
1929
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
1930
1930
|
if (!window || !window.dataLayer) {
|
|
1931
1931
|
console.error("dataLayer object not found.");
|
|
1932
1932
|
return;
|
|
1933
1933
|
}
|
|
1934
1934
|
const sendItemTitle = data.searchQuery !== ((_a = data.analytics) == null ? void 0 : _a.label);
|
|
1935
1935
|
const title = sendItemTitle ? (_b = data.analytics) == null ? void 0 : _b.label : void 0;
|
|
1936
|
-
const params = {
|
|
1936
|
+
const params = __spreadValues({
|
|
1937
1937
|
search_text: data.searchQuery,
|
|
1938
1938
|
item_title: title,
|
|
1939
1939
|
item_id: data.itemId,
|
|
1940
1940
|
ecommerce: parseEcommerceData(data, (_c = data.analytics) == null ? void 0 : _c.listLabel)
|
|
1941
|
-
};
|
|
1941
|
+
}, (_e = (_d = data.analytics) == null ? void 0 : _d.additionalParams) != null ? _e : {});
|
|
1942
1942
|
window.dataLayer.push(__spreadValues({
|
|
1943
|
-
event: (
|
|
1943
|
+
event: (_g = (_f = data.analytics) == null ? void 0 : _f.type) != null ? _g : options.parentEventName
|
|
1944
1944
|
}, params));
|
|
1945
1945
|
};
|
|
1946
1946
|
const processDebugEvent = (data) => {
|
|
@@ -2783,6 +2783,10 @@ const useParamsStore = defineStore("params", () => {
|
|
|
2783
2783
|
const searchString = ref("");
|
|
2784
2784
|
const optionsStore = useOptionsStore();
|
|
2785
2785
|
const redirectionStore = useRedirectionStore();
|
|
2786
|
+
const sortParams = ref({
|
|
2787
|
+
selectedSortKey: "",
|
|
2788
|
+
previousSortKey: ""
|
|
2789
|
+
});
|
|
2786
2790
|
const query = computed(() => params.value[QUERY_PARAMS_PARSED.QUERY]);
|
|
2787
2791
|
const page = computed(() => {
|
|
2788
2792
|
const page2 = Number(params.value[QUERY_PARAMS_PARSED.PAGE]) || 1;
|
|
@@ -2917,6 +2921,12 @@ const useParamsStore = defineStore("params", () => {
|
|
|
2917
2921
|
}
|
|
2918
2922
|
searchResultsLink.value = newSearchResultsLink;
|
|
2919
2923
|
};
|
|
2924
|
+
const setSortSettings = ({ selectedSortKey, previousSortKey }) => {
|
|
2925
|
+
sortParams.value = {
|
|
2926
|
+
selectedSortKey,
|
|
2927
|
+
previousSortKey
|
|
2928
|
+
};
|
|
2929
|
+
};
|
|
2920
2930
|
return {
|
|
2921
2931
|
params,
|
|
2922
2932
|
defaultLimit,
|
|
@@ -2927,6 +2937,7 @@ const useParamsStore = defineStore("params", () => {
|
|
|
2927
2937
|
limit,
|
|
2928
2938
|
sort,
|
|
2929
2939
|
filters,
|
|
2940
|
+
sortParams,
|
|
2930
2941
|
add,
|
|
2931
2942
|
removeAllFilters,
|
|
2932
2943
|
removeParameters,
|
|
@@ -2934,7 +2945,8 @@ const useParamsStore = defineStore("params", () => {
|
|
|
2934
2945
|
goToResults,
|
|
2935
2946
|
appendParams,
|
|
2936
2947
|
setDefaultLimit,
|
|
2937
|
-
setSearchResultsLink
|
|
2948
|
+
setSearchResultsLink,
|
|
2949
|
+
setSortSettings
|
|
2938
2950
|
};
|
|
2939
2951
|
});
|
|
2940
2952
|
const flattenFacet = (key, facets, suggestion, inputValue) => {
|
|
@@ -4243,61 +4255,6 @@ const _sfc_main$13 = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValue
|
|
|
4243
4255
|
};
|
|
4244
4256
|
}
|
|
4245
4257
|
}));
|
|
4246
|
-
const getSearchTrackingData = (searchText, type) => {
|
|
4247
|
-
return {
|
|
4248
|
-
searchQuery: searchText,
|
|
4249
|
-
analytics: {
|
|
4250
|
-
type,
|
|
4251
|
-
label: searchText
|
|
4252
|
-
}
|
|
4253
|
-
};
|
|
4254
|
-
};
|
|
4255
|
-
const useTrackingStore = defineStore("tracking", () => {
|
|
4256
|
-
const optionsStore = useOptionsStore();
|
|
4257
|
-
const trackSearch = ({
|
|
4258
|
-
queryKey,
|
|
4259
|
-
query,
|
|
4260
|
-
type = "search_query"
|
|
4261
|
-
}) => {
|
|
4262
|
-
var _a, _b;
|
|
4263
|
-
const options = (_a = optionsStore.envOptions) != null ? _a : { environment: "production" };
|
|
4264
|
-
const hasFilters = Object.keys((_b = query.filters) != null ? _b : {}).length > 0;
|
|
4265
|
-
if (hasFilters) {
|
|
4266
|
-
const data2 = getSearchTrackingData(query.searchText, "search_filters");
|
|
4267
|
-
track(queryKey, data2, options);
|
|
4268
|
-
return;
|
|
4269
|
-
}
|
|
4270
|
-
const data = getSearchTrackingData(query.searchText, type);
|
|
4271
|
-
track(queryKey, data, options);
|
|
4272
|
-
};
|
|
4273
|
-
const trackResults = ({
|
|
4274
|
-
queryKey,
|
|
4275
|
-
results
|
|
4276
|
-
}) => {
|
|
4277
|
-
var _a;
|
|
4278
|
-
const options = (_a = optionsStore.envOptions) != null ? _a : { environment: "production" };
|
|
4279
|
-
if (results.total > 0) {
|
|
4280
|
-
return;
|
|
4281
|
-
}
|
|
4282
|
-
const data = getSearchTrackingData(results.searchText, "search_zero_results");
|
|
4283
|
-
track(queryKey, data, options);
|
|
4284
|
-
};
|
|
4285
|
-
const trackEvent = ({ queryKey, data }) => {
|
|
4286
|
-
var _a, _b, _c, _d, _e;
|
|
4287
|
-
const options = (_a = optionsStore.envOptions) != null ? _a : { environment: "production" };
|
|
4288
|
-
const trackingOptions = (_b = optionsStore.trackingOptions) != null ? _b : {};
|
|
4289
|
-
const items = (_d = (_c = data.analytics) == null ? void 0 : _c.items) != null ? _d : [];
|
|
4290
|
-
const mappedItems = ((_e = trackingOptions.analytics) == null ? void 0 : _e.itemMap) ? items.map(trackingOptions.analytics.itemMap) : items;
|
|
4291
|
-
track(
|
|
4292
|
-
queryKey,
|
|
4293
|
-
__spreadProps(__spreadValues({}, data), {
|
|
4294
|
-
analytics: data.analytics ? __spreadProps(__spreadValues({}, data.analytics), { items: mappedItems }) : void 0
|
|
4295
|
-
}),
|
|
4296
|
-
options
|
|
4297
|
-
);
|
|
4298
|
-
};
|
|
4299
|
-
return { trackSearch, trackResults, trackEvent };
|
|
4300
|
-
});
|
|
4301
4258
|
const _hoisted_1$_ = ["href"];
|
|
4302
4259
|
const _hoisted_2$I = { class: "lupa-search-box-product-image-section" };
|
|
4303
4260
|
const _hoisted_3$x = { class: "lupa-search-box-product-details-section" };
|
|
@@ -4317,11 +4274,7 @@ const _sfc_main$12 = /* @__PURE__ */ defineComponent({
|
|
|
4317
4274
|
emits: ["product-click"],
|
|
4318
4275
|
setup(__props, { emit }) {
|
|
4319
4276
|
const props = __props;
|
|
4320
|
-
const historyStore = useHistoryStore();
|
|
4321
|
-
const trackingStore = useTrackingStore();
|
|
4322
|
-
const optionsStore = useOptionsStore();
|
|
4323
4277
|
const isInStock = ref(true);
|
|
4324
|
-
const { boxRoutingBehavior } = storeToRefs(optionsStore);
|
|
4325
4278
|
const link = computed(() => {
|
|
4326
4279
|
var _a, _b;
|
|
4327
4280
|
return generateLink((_b = (_a = props.panelOptions.links) == null ? void 0 : _a.details) != null ? _b : "", props.item);
|
|
@@ -4336,54 +4289,16 @@ const _sfc_main$12 = /* @__PURE__ */ defineComponent({
|
|
|
4336
4289
|
(e) => e.type !== DocumentElementType.IMAGE && e.type !== DocumentElementType.ADDTOCART
|
|
4337
4290
|
)) != null ? _b : [];
|
|
4338
4291
|
});
|
|
4339
|
-
const id = computed(() => {
|
|
4340
|
-
if (props.panelOptions.idKey) {
|
|
4341
|
-
return props.item[props.panelOptions.idKey];
|
|
4342
|
-
}
|
|
4343
|
-
return "";
|
|
4344
|
-
});
|
|
4345
|
-
const title = computed(() => {
|
|
4346
|
-
if (!props.panelOptions.titleKey) {
|
|
4347
|
-
return "";
|
|
4348
|
-
}
|
|
4349
|
-
const title2 = props.item[props.panelOptions.titleKey] || "";
|
|
4350
|
-
historyStore.add({
|
|
4351
|
-
item: title2
|
|
4352
|
-
});
|
|
4353
|
-
return title2;
|
|
4354
|
-
});
|
|
4355
4292
|
const addToCartElement = computed(() => {
|
|
4356
4293
|
var _a;
|
|
4357
4294
|
return (_a = props.panelOptions.elements) == null ? void 0 : _a.find((e) => e.type === DocumentElementType.ADDTOCART);
|
|
4358
4295
|
});
|
|
4359
4296
|
const handleClick = (event) => {
|
|
4360
|
-
|
|
4361
|
-
|
|
4362
|
-
|
|
4363
|
-
|
|
4364
|
-
});
|
|
4365
|
-
}
|
|
4366
|
-
if (!props.panelOptions.idKey) {
|
|
4367
|
-
return;
|
|
4368
|
-
}
|
|
4369
|
-
trackingStore.trackEvent({
|
|
4370
|
-
queryKey: props.panelOptions.queryKey,
|
|
4371
|
-
data: {
|
|
4372
|
-
itemId: id.value,
|
|
4373
|
-
searchQuery: props.inputValue,
|
|
4374
|
-
type: "itemClick",
|
|
4375
|
-
analytics: {
|
|
4376
|
-
type: "autocomplete_product_click",
|
|
4377
|
-
label: (_a = title.value) != null ? _a : link.value,
|
|
4378
|
-
items: [props.item]
|
|
4379
|
-
}
|
|
4380
|
-
}
|
|
4297
|
+
emit("product-click", {
|
|
4298
|
+
item: props.item,
|
|
4299
|
+
eventType: "itemClick",
|
|
4300
|
+
event
|
|
4381
4301
|
});
|
|
4382
|
-
if (!link.value) {
|
|
4383
|
-
return;
|
|
4384
|
-
}
|
|
4385
|
-
emit("product-click");
|
|
4386
|
-
handleRoutingEvent(link.value, event, boxRoutingBehavior.value === "event");
|
|
4387
4302
|
};
|
|
4388
4303
|
onMounted(() => {
|
|
4389
4304
|
checkIfIsInStock();
|
|
@@ -4436,6 +4351,61 @@ const _sfc_main$12 = /* @__PURE__ */ defineComponent({
|
|
|
4436
4351
|
};
|
|
4437
4352
|
}
|
|
4438
4353
|
});
|
|
4354
|
+
const getSearchTrackingData = (searchText, type) => {
|
|
4355
|
+
return {
|
|
4356
|
+
searchQuery: searchText,
|
|
4357
|
+
analytics: {
|
|
4358
|
+
type,
|
|
4359
|
+
label: searchText
|
|
4360
|
+
}
|
|
4361
|
+
};
|
|
4362
|
+
};
|
|
4363
|
+
const useTrackingStore = defineStore("tracking", () => {
|
|
4364
|
+
const optionsStore = useOptionsStore();
|
|
4365
|
+
const trackSearch = ({
|
|
4366
|
+
queryKey,
|
|
4367
|
+
query,
|
|
4368
|
+
type = "search_query"
|
|
4369
|
+
}) => {
|
|
4370
|
+
var _a, _b;
|
|
4371
|
+
const options = (_a = optionsStore.envOptions) != null ? _a : { environment: "production" };
|
|
4372
|
+
const hasFilters = Object.keys((_b = query.filters) != null ? _b : {}).length > 0;
|
|
4373
|
+
if (hasFilters) {
|
|
4374
|
+
const data2 = getSearchTrackingData(query.searchText, "search_filters");
|
|
4375
|
+
track(queryKey, data2, options);
|
|
4376
|
+
return;
|
|
4377
|
+
}
|
|
4378
|
+
const data = getSearchTrackingData(query.searchText, type);
|
|
4379
|
+
track(queryKey, data, options);
|
|
4380
|
+
};
|
|
4381
|
+
const trackResults = ({
|
|
4382
|
+
queryKey,
|
|
4383
|
+
results
|
|
4384
|
+
}) => {
|
|
4385
|
+
var _a;
|
|
4386
|
+
const options = (_a = optionsStore.envOptions) != null ? _a : { environment: "production" };
|
|
4387
|
+
if (results.total > 0) {
|
|
4388
|
+
return;
|
|
4389
|
+
}
|
|
4390
|
+
const data = getSearchTrackingData(results.searchText, "search_zero_results");
|
|
4391
|
+
track(queryKey, data, options);
|
|
4392
|
+
};
|
|
4393
|
+
const trackEvent = ({ queryKey, data }) => {
|
|
4394
|
+
var _a, _b, _c, _d, _e;
|
|
4395
|
+
const options = (_a = optionsStore.envOptions) != null ? _a : { environment: "production" };
|
|
4396
|
+
const trackingOptions = (_b = optionsStore.trackingOptions) != null ? _b : {};
|
|
4397
|
+
const items = (_d = (_c = data.analytics) == null ? void 0 : _c.items) != null ? _d : [];
|
|
4398
|
+
const mappedItems = ((_e = trackingOptions.analytics) == null ? void 0 : _e.itemMap) ? items.map(trackingOptions.analytics.itemMap) : items;
|
|
4399
|
+
track(
|
|
4400
|
+
queryKey,
|
|
4401
|
+
__spreadProps(__spreadValues({}, data), {
|
|
4402
|
+
analytics: data.analytics ? __spreadProps(__spreadValues({}, data.analytics), { items: mappedItems }) : void 0
|
|
4403
|
+
}),
|
|
4404
|
+
options
|
|
4405
|
+
);
|
|
4406
|
+
};
|
|
4407
|
+
return { trackSearch, trackResults, trackEvent };
|
|
4408
|
+
});
|
|
4439
4409
|
const _hoisted_1$Z = { id: "lupa-search-box-products" };
|
|
4440
4410
|
const _sfc_main$11 = /* @__PURE__ */ defineComponent({
|
|
4441
4411
|
__name: "SearchBoxProducts",
|
|
@@ -4445,9 +4415,14 @@ const _sfc_main$11 = /* @__PURE__ */ defineComponent({
|
|
|
4445
4415
|
panelOptions: {},
|
|
4446
4416
|
labels: {}
|
|
4447
4417
|
},
|
|
4448
|
-
|
|
4418
|
+
emits: ["product-click"],
|
|
4419
|
+
setup(__props, { emit }) {
|
|
4449
4420
|
const props = __props;
|
|
4450
4421
|
const searchBoxStore = useSearchBoxStore();
|
|
4422
|
+
const historyStore = useHistoryStore();
|
|
4423
|
+
const trackingStore = useTrackingStore();
|
|
4424
|
+
const optionsStore = useOptionsStore();
|
|
4425
|
+
const { boxRoutingBehavior } = storeToRefs(optionsStore);
|
|
4451
4426
|
const { highlightedItem } = storeToRefs(searchBoxStore);
|
|
4452
4427
|
const highlightedIndex = computed(() => {
|
|
4453
4428
|
var _a, _b, _c;
|
|
@@ -4456,6 +4431,42 @@ const _sfc_main$11 = /* @__PURE__ */ defineComponent({
|
|
|
4456
4431
|
}
|
|
4457
4432
|
return (_c = (_b = highlightedItem.value) == null ? void 0 : _b.index) != null ? _c : -1;
|
|
4458
4433
|
});
|
|
4434
|
+
const handleProductClick = ({
|
|
4435
|
+
item,
|
|
4436
|
+
eventType,
|
|
4437
|
+
event
|
|
4438
|
+
}) => {
|
|
4439
|
+
var _a, _b;
|
|
4440
|
+
const link = generateLink((_b = (_a = props.panelOptions.links) == null ? void 0 : _a.details) != null ? _b : "", item);
|
|
4441
|
+
const title = props.panelOptions.titleKey ? item[props.panelOptions.titleKey] || "" : "";
|
|
4442
|
+
const id = props.panelOptions.idKey ? item[props.panelOptions.idKey] : "";
|
|
4443
|
+
if (props.panelOptions.titleKey) {
|
|
4444
|
+
historyStore.add({
|
|
4445
|
+
item: item[props.panelOptions.titleKey] || ""
|
|
4446
|
+
});
|
|
4447
|
+
}
|
|
4448
|
+
if (!props.panelOptions.idKey) {
|
|
4449
|
+
return;
|
|
4450
|
+
}
|
|
4451
|
+
trackingStore.trackEvent({
|
|
4452
|
+
queryKey: props.panelOptions.queryKey,
|
|
4453
|
+
data: {
|
|
4454
|
+
itemId: id,
|
|
4455
|
+
searchQuery: props.inputValue,
|
|
4456
|
+
type: eventType || "itemClick",
|
|
4457
|
+
analytics: {
|
|
4458
|
+
type: "autocomplete_product_click",
|
|
4459
|
+
label: title != null ? title : link,
|
|
4460
|
+
items: [item]
|
|
4461
|
+
}
|
|
4462
|
+
}
|
|
4463
|
+
});
|
|
4464
|
+
if (!link) {
|
|
4465
|
+
return;
|
|
4466
|
+
}
|
|
4467
|
+
emit("product-click");
|
|
4468
|
+
handleRoutingEvent(link, event, boxRoutingBehavior.value === "event");
|
|
4469
|
+
};
|
|
4459
4470
|
return (_ctx, _cache) => {
|
|
4460
4471
|
return openBlock(), createElementBlock("div", _hoisted_1$Z, [
|
|
4461
4472
|
_ctx.$slots.productCard ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(_ctx.items, (item, index) => {
|
|
@@ -4466,7 +4477,7 @@ const _sfc_main$11 = /* @__PURE__ */ defineComponent({
|
|
|
4466
4477
|
labels: _ctx.labels,
|
|
4467
4478
|
highlighted: index === highlightedIndex.value,
|
|
4468
4479
|
inputValue: _ctx.inputValue,
|
|
4469
|
-
|
|
4480
|
+
itemClicked: handleProductClick
|
|
4470
4481
|
});
|
|
4471
4482
|
}), 128)) : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(_ctx.items, (item, index) => {
|
|
4472
4483
|
return openBlock(), createBlock(_sfc_main$12, {
|
|
@@ -4476,7 +4487,7 @@ const _sfc_main$11 = /* @__PURE__ */ defineComponent({
|
|
|
4476
4487
|
labels: _ctx.labels,
|
|
4477
4488
|
highlighted: index === highlightedIndex.value,
|
|
4478
4489
|
inputValue: _ctx.inputValue,
|
|
4479
|
-
onProductClick:
|
|
4490
|
+
onProductClick: handleProductClick
|
|
4480
4491
|
}, null, 8, ["item", "panelOptions", "labels", "highlighted", "inputValue"]);
|
|
4481
4492
|
}), 128))
|
|
4482
4493
|
]);
|
|
@@ -7828,6 +7839,7 @@ const _sfc_main$D = /* @__PURE__ */ defineComponent({
|
|
|
7828
7839
|
if (!value) {
|
|
7829
7840
|
return;
|
|
7830
7841
|
}
|
|
7842
|
+
paramStore.setSortSettings({ selectedSortKey: value, previousSortKey: previousKey.value });
|
|
7831
7843
|
(_c = (_b = props.callbacks) == null ? void 0 : _b.onSortChange) == null ? void 0 : _c.call(_b, { selectedSortKey: value, previousSortKey: previousKey.value });
|
|
7832
7844
|
paramStore.appendParams({
|
|
7833
7845
|
params: [{ name: QUERY_PARAMS.SORT, value }],
|
|
@@ -9534,7 +9546,7 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
|
|
|
9534
9546
|
return (_a = props.initialFilters) != null ? _a : {};
|
|
9535
9547
|
});
|
|
9536
9548
|
const { currentQueryText, hasResults, currentFilterCount } = storeToRefs(searchResultStore);
|
|
9537
|
-
const { searchString } = storeToRefs(paramStore);
|
|
9549
|
+
const { searchString, sortParams } = storeToRefs(paramStore);
|
|
9538
9550
|
const { defaultSearchResultPageSize } = storeToRefs(optionStore);
|
|
9539
9551
|
const searchResultsFilters = ref(null);
|
|
9540
9552
|
const mounted = ref(false);
|
|
@@ -9571,6 +9583,7 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
|
|
|
9571
9583
|
window.removeEventListener("popstate", handlePopState);
|
|
9572
9584
|
});
|
|
9573
9585
|
const trackItemListView = (title, items = []) => {
|
|
9586
|
+
var _a, _b;
|
|
9574
9587
|
trackingStore.trackEvent({
|
|
9575
9588
|
queryKey: props.options.queryKey,
|
|
9576
9589
|
data: {
|
|
@@ -9578,7 +9591,11 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
|
|
|
9578
9591
|
type: "view_item_list",
|
|
9579
9592
|
label: title,
|
|
9580
9593
|
listLabel: title,
|
|
9581
|
-
items
|
|
9594
|
+
items,
|
|
9595
|
+
additionalParams: {
|
|
9596
|
+
previousSortKey: (_a = sortParams.value) == null ? void 0 : _a.previousSortKey,
|
|
9597
|
+
newSortKey: (_b = sortParams.value) == null ? void 0 : _b.selectedSortKey
|
|
9598
|
+
}
|
|
9582
9599
|
},
|
|
9583
9600
|
options: { allowEmptySearchQuery: true }
|
|
9584
9601
|
}
|
|
@@ -16345,7 +16362,7 @@ const suggestSearchChatPhrases = (options, request, chatSettings) => __async(voi
|
|
|
16345
16362
|
return { success: false, errors: [e] };
|
|
16346
16363
|
}
|
|
16347
16364
|
});
|
|
16348
|
-
const suggestPhraseAlternatives = (
|
|
16365
|
+
const suggestPhraseAlternatives = (options, request, chatSettings) => __async(void 0, null, function* () {
|
|
16349
16366
|
var _a, _b, _c;
|
|
16350
16367
|
const { environment, customBaseUrl } = options;
|
|
16351
16368
|
const model = (chatSettings == null ? void 0 : chatSettings.model) ? `?model=${chatSettings.model}` : ``;
|
|
@@ -16353,7 +16370,7 @@ const suggestPhraseAlternatives = (_0, _1, _2) => __async(void 0, [_0, _1, _2],
|
|
|
16353
16370
|
const res = yield fetch(
|
|
16354
16371
|
`${getApiUrl(environment, customBaseUrl)}chat/phraseAlternatives${model}`,
|
|
16355
16372
|
__spreadProps(__spreadValues({}, defaultConfig), {
|
|
16356
|
-
body: JSON.stringify(
|
|
16373
|
+
body: JSON.stringify(request),
|
|
16357
16374
|
headers: __spreadValues(__spreadValues({}, headers), (_a = options.customHeaders) != null ? _a : {})
|
|
16358
16375
|
})
|
|
16359
16376
|
);
|
|
@@ -16369,38 +16386,13 @@ const suggestPhraseAlternatives = (_0, _1, _2) => __async(void 0, [_0, _1, _2],
|
|
|
16369
16386
|
return { success: false, errors: [e] };
|
|
16370
16387
|
}
|
|
16371
16388
|
});
|
|
16372
|
-
const
|
|
16373
|
-
var _a, _b, _c;
|
|
16374
|
-
const { environment, customBaseUrl } = options;
|
|
16375
|
-
const model = (chatSettings == null ? void 0 : chatSettings.model) ? `?model=${chatSettings.model}` : ``;
|
|
16376
|
-
try {
|
|
16377
|
-
const res = yield fetch(`${getApiUrl(environment, customBaseUrl)}chat/simplify${model}`, __spreadProps(__spreadValues({}, defaultConfig), {
|
|
16378
|
-
body: JSON.stringify({ phrases }),
|
|
16379
|
-
headers: __spreadValues(__spreadValues({}, headers), (_a = options.customHeaders) != null ? _a : {})
|
|
16380
|
-
}));
|
|
16381
|
-
if (res.status < 400) {
|
|
16382
|
-
const data = yield res.json();
|
|
16383
|
-
return __spreadProps(__spreadValues({}, data), { success: true });
|
|
16384
|
-
}
|
|
16385
|
-
const errors = yield res.json();
|
|
16386
|
-
(_b = options == null ? void 0 : options.onError) == null ? void 0 : _b.call(options, errors);
|
|
16387
|
-
return { success: false, errors };
|
|
16388
|
-
} catch (e) {
|
|
16389
|
-
(_c = options == null ? void 0 : options.onError) == null ? void 0 : _c.call(options, e);
|
|
16390
|
-
return { success: false, errors: [e] };
|
|
16391
|
-
}
|
|
16392
|
-
});
|
|
16393
|
-
const suggestBestProductMatches = (_0, _1, _2) => __async(void 0, [_0, _1, _2], function* (options, {
|
|
16394
|
-
initialQuery,
|
|
16395
|
-
productStrings,
|
|
16396
|
-
messageHistory
|
|
16397
|
-
}, chatSettings) {
|
|
16389
|
+
const suggestBestProductMatches = (options, request, chatSettings) => __async(void 0, null, function* () {
|
|
16398
16390
|
var _a, _b, _c;
|
|
16399
16391
|
const { environment, customBaseUrl } = options;
|
|
16400
16392
|
const model = (chatSettings == null ? void 0 : chatSettings.model) ? `?model=${chatSettings.model}` : ``;
|
|
16401
16393
|
try {
|
|
16402
16394
|
const res = yield fetch(`${getApiUrl(environment, customBaseUrl)}chat/bestProducts${model}`, __spreadProps(__spreadValues({}, defaultConfig), {
|
|
16403
|
-
body: JSON.stringify(
|
|
16395
|
+
body: JSON.stringify(request),
|
|
16404
16396
|
headers: __spreadValues(__spreadValues({}, headers), (_a = options.customHeaders) != null ? _a : {})
|
|
16405
16397
|
}));
|
|
16406
16398
|
if (res.status < 400) {
|
|
@@ -16436,11 +16428,11 @@ const prepareChatHistory = (chatLog) => {
|
|
|
16436
16428
|
}
|
|
16437
16429
|
return history;
|
|
16438
16430
|
};
|
|
16439
|
-
const getTextResponseChunkStream = (options,
|
|
16431
|
+
const getTextResponseChunkStream = (options, request, onChunkReceived, chatSettings) => {
|
|
16440
16432
|
var _a;
|
|
16441
16433
|
const model = (chatSettings == null ? void 0 : chatSettings.model) ? `?model=${chatSettings.model}` : ``;
|
|
16442
16434
|
fetch(`${getApiUrl(options.environment, options.customBaseUrl)}chat/text${model}`, __spreadProps(__spreadValues({}, defaultConfig), {
|
|
16443
|
-
body: JSON.stringify(
|
|
16435
|
+
body: JSON.stringify(request),
|
|
16444
16436
|
headers: __spreadValues(__spreadValues({}, headers), (_a = options.customHeaders) != null ? _a : {})
|
|
16445
16437
|
})).then((response) => {
|
|
16446
16438
|
const reader = response.body.getReader();
|
|
@@ -16460,7 +16452,6 @@ const getTextResponseChunkStream = (options, { initialQuery, messageHistory }, o
|
|
|
16460
16452
|
const ChatService = {
|
|
16461
16453
|
suggestSearchChatPhrases,
|
|
16462
16454
|
suggestPhraseAlternatives,
|
|
16463
|
-
suggestSimplifiedPhrases,
|
|
16464
16455
|
suggestBestProductMatches,
|
|
16465
16456
|
prepareChatHistory,
|
|
16466
16457
|
getTextResponseChunkStream
|
|
@@ -16582,7 +16573,8 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
16582
16573
|
const { phrases } = yield ChatService.suggestPhraseAlternatives(
|
|
16583
16574
|
props.options.sdkOptions,
|
|
16584
16575
|
{
|
|
16585
|
-
phrases: [props.phrase]
|
|
16576
|
+
phrases: [props.phrase],
|
|
16577
|
+
queryKey: props.options.displayOptions.queryKey
|
|
16586
16578
|
},
|
|
16587
16579
|
props.options.chatSettings
|
|
16588
16580
|
);
|
|
@@ -16655,7 +16647,8 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
|
16655
16647
|
{
|
|
16656
16648
|
initialQuery: props.entry.userInput,
|
|
16657
16649
|
productStrings: productResultStrings,
|
|
16658
|
-
messageHistory: (_a = props.history) != null ? _a : []
|
|
16650
|
+
messageHistory: (_a = props.history) != null ? _a : [],
|
|
16651
|
+
queryKey: props.options.displayOptions.queryKey
|
|
16659
16652
|
},
|
|
16660
16653
|
props.options.chatSettings
|
|
16661
16654
|
);
|
|
@@ -16729,7 +16722,8 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
16729
16722
|
props.options.sdkOptions,
|
|
16730
16723
|
{
|
|
16731
16724
|
initialQuery: props.content,
|
|
16732
|
-
messageHistory: (_a = props.history) != null ? _a : []
|
|
16725
|
+
messageHistory: (_a = props.history) != null ? _a : [],
|
|
16726
|
+
queryKey: props.options.displayOptions.queryKey
|
|
16733
16727
|
},
|
|
16734
16728
|
processChunk,
|
|
16735
16729
|
props.options.chatSettings
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SdkOptions } from '..';
|
|
2
|
-
import { ChatMessage, SearchChatRequest } from '../types/chat/SearchChatRequest';
|
|
2
|
+
import { ChatMessage, SearchChatBestProductMatchesRequest, SearchChatPraseAlternativesRequest, SearchChatRequest, SearchChatTextRequest } from '../types/chat/SearchChatRequest';
|
|
3
3
|
import { SearchChatResponse } from '../types/chat/SearchChatResponse';
|
|
4
4
|
import { ChatContent } from '../types/chat/ChatLog';
|
|
5
5
|
import { ChatSettings } from '../types/chat/ChatOptions';
|
|
@@ -8,31 +8,16 @@ declare const _default: {
|
|
|
8
8
|
success: boolean;
|
|
9
9
|
errors: any;
|
|
10
10
|
}>;
|
|
11
|
-
suggestPhraseAlternatives: (options: SdkOptions,
|
|
12
|
-
phrases: string[];
|
|
13
|
-
}, chatSettings?: ChatSettings) => Promise<Partial<SearchChatResponse> & {
|
|
11
|
+
suggestPhraseAlternatives: (options: SdkOptions, request: SearchChatPraseAlternativesRequest, chatSettings?: ChatSettings) => Promise<Partial<SearchChatResponse> & {
|
|
14
12
|
success: boolean;
|
|
15
13
|
errors: any;
|
|
16
14
|
}>;
|
|
17
|
-
|
|
18
|
-
phrases: string[];
|
|
19
|
-
}, chatSettings?: ChatSettings) => Promise<Partial<SearchChatResponse> & {
|
|
20
|
-
success: boolean;
|
|
21
|
-
errors: any;
|
|
22
|
-
}>;
|
|
23
|
-
suggestBestProductMatches: (options: SdkOptions, { initialQuery, productStrings, messageHistory }: {
|
|
24
|
-
initialQuery: string;
|
|
25
|
-
productStrings: string[];
|
|
26
|
-
messageHistory: ChatMessage[];
|
|
27
|
-
}, chatSettings?: ChatSettings) => Promise<{
|
|
15
|
+
suggestBestProductMatches: (options: SdkOptions, request: SearchChatBestProductMatchesRequest, chatSettings?: ChatSettings) => Promise<{
|
|
28
16
|
products?: string[];
|
|
29
17
|
success: boolean;
|
|
30
18
|
errors: any;
|
|
31
19
|
}>;
|
|
32
20
|
prepareChatHistory: (chatLog: ChatContent[]) => ChatMessage[];
|
|
33
|
-
getTextResponseChunkStream: (options: SdkOptions,
|
|
34
|
-
initialQuery: string;
|
|
35
|
-
messageHistory: ChatMessage[];
|
|
36
|
-
}, onChunkReceived: (chunk: string) => void, chatSettings?: ChatSettings) => void;
|
|
21
|
+
getTextResponseChunkStream: (options: SdkOptions, request: SearchChatTextRequest, onChunkReceived: (chunk: string) => void, chatSettings?: ChatSettings) => void;
|
|
37
22
|
};
|
|
38
23
|
export default _default;
|
|
@@ -19,7 +19,7 @@ declare const _sfc_main: import("vue").DefineComponent<{
|
|
|
19
19
|
type: __PropType<SearchBoxOptionLabels>;
|
|
20
20
|
required: false;
|
|
21
21
|
};
|
|
22
|
-
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin,
|
|
22
|
+
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "product-click"[], "product-click", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
23
23
|
items: {
|
|
24
24
|
type: __PropType<Document[]>;
|
|
25
25
|
required: true;
|
|
@@ -36,5 +36,7 @@ declare const _sfc_main: import("vue").DefineComponent<{
|
|
|
36
36
|
type: __PropType<SearchBoxOptionLabels>;
|
|
37
37
|
required: false;
|
|
38
38
|
};
|
|
39
|
-
}
|
|
39
|
+
}>> & {
|
|
40
|
+
"onProduct-click"?: (...args: any[]) => any;
|
|
41
|
+
}, {}, {}>;
|
|
40
42
|
export default _sfc_main;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type Ref } from 'vue';
|
|
2
2
|
import type { QueryParams } from '../types/search-results/QueryParams';
|
|
3
3
|
import type { InputSuggestionFacet } from '../types/search-box/Common';
|
|
4
|
-
import { SsrOptions } from '..';
|
|
4
|
+
import { SortCallbackContext, SsrOptions } from '..';
|
|
5
5
|
export declare const useParamsStore: import("pinia").StoreDefinition<"params", import("pinia")._UnwrapAll<Pick<{
|
|
6
6
|
params: Ref<QueryParams>;
|
|
7
7
|
defaultLimit: Ref<number>;
|
|
@@ -12,6 +12,10 @@ export declare const useParamsStore: import("pinia").StoreDefinition<"params", i
|
|
|
12
12
|
limit: import("vue").ComputedRef<number>;
|
|
13
13
|
sort: import("vue").ComputedRef<string>;
|
|
14
14
|
filters: import("vue").ComputedRef<import("@getlupa/client-sdk/Types").FilterGroup>;
|
|
15
|
+
sortParams: Ref<{
|
|
16
|
+
selectedSortKey: string;
|
|
17
|
+
previousSortKey: string;
|
|
18
|
+
}>;
|
|
15
19
|
add: (newParams: QueryParams, ssr?: SsrOptions) => {
|
|
16
20
|
params: QueryParams;
|
|
17
21
|
};
|
|
@@ -42,7 +46,8 @@ export declare const useParamsStore: import("pinia").StoreDefinition<"params", i
|
|
|
42
46
|
};
|
|
43
47
|
setDefaultLimit: (newDefaultLimit: number) => number;
|
|
44
48
|
setSearchResultsLink: (newSearchResultsLink: string) => void;
|
|
45
|
-
|
|
49
|
+
setSortSettings: ({ selectedSortKey, previousSortKey }: SortCallbackContext) => void;
|
|
50
|
+
}, "params" | "searchResultsLink" | "defaultLimit" | "searchString" | "sortParams">>, Pick<{
|
|
46
51
|
params: Ref<QueryParams>;
|
|
47
52
|
defaultLimit: Ref<number>;
|
|
48
53
|
searchResultsLink: Ref<string>;
|
|
@@ -52,6 +57,10 @@ export declare const useParamsStore: import("pinia").StoreDefinition<"params", i
|
|
|
52
57
|
limit: import("vue").ComputedRef<number>;
|
|
53
58
|
sort: import("vue").ComputedRef<string>;
|
|
54
59
|
filters: import("vue").ComputedRef<import("@getlupa/client-sdk/Types").FilterGroup>;
|
|
60
|
+
sortParams: Ref<{
|
|
61
|
+
selectedSortKey: string;
|
|
62
|
+
previousSortKey: string;
|
|
63
|
+
}>;
|
|
55
64
|
add: (newParams: QueryParams, ssr?: SsrOptions) => {
|
|
56
65
|
params: QueryParams;
|
|
57
66
|
};
|
|
@@ -82,6 +91,7 @@ export declare const useParamsStore: import("pinia").StoreDefinition<"params", i
|
|
|
82
91
|
};
|
|
83
92
|
setDefaultLimit: (newDefaultLimit: number) => number;
|
|
84
93
|
setSearchResultsLink: (newSearchResultsLink: string) => void;
|
|
94
|
+
setSortSettings: ({ selectedSortKey, previousSortKey }: SortCallbackContext) => void;
|
|
85
95
|
}, "sort" | "filters" | "query" | "page" | "limit">, Pick<{
|
|
86
96
|
params: Ref<QueryParams>;
|
|
87
97
|
defaultLimit: Ref<number>;
|
|
@@ -92,6 +102,10 @@ export declare const useParamsStore: import("pinia").StoreDefinition<"params", i
|
|
|
92
102
|
limit: import("vue").ComputedRef<number>;
|
|
93
103
|
sort: import("vue").ComputedRef<string>;
|
|
94
104
|
filters: import("vue").ComputedRef<import("@getlupa/client-sdk/Types").FilterGroup>;
|
|
105
|
+
sortParams: Ref<{
|
|
106
|
+
selectedSortKey: string;
|
|
107
|
+
previousSortKey: string;
|
|
108
|
+
}>;
|
|
95
109
|
add: (newParams: QueryParams, ssr?: SsrOptions) => {
|
|
96
110
|
params: QueryParams;
|
|
97
111
|
};
|
|
@@ -122,4 +136,5 @@ export declare const useParamsStore: import("pinia").StoreDefinition<"params", i
|
|
|
122
136
|
};
|
|
123
137
|
setDefaultLimit: (newDefaultLimit: number) => number;
|
|
124
138
|
setSearchResultsLink: (newSearchResultsLink: string) => void;
|
|
125
|
-
|
|
139
|
+
setSortSettings: ({ selectedSortKey, previousSortKey }: SortCallbackContext) => void;
|
|
140
|
+
}, "add" | "removeAllFilters" | "removeParameters" | "handleNoResultsFlag" | "goToResults" | "appendParams" | "setDefaultLimit" | "setSearchResultsLink" | "setSortSettings">>;
|
|
@@ -2,8 +2,22 @@ export type ChatMessage = {
|
|
|
2
2
|
role: 'user' | 'assistant';
|
|
3
3
|
content: string;
|
|
4
4
|
};
|
|
5
|
-
export type
|
|
5
|
+
export type SearchChatRequestBase = {
|
|
6
|
+
queryKey: string;
|
|
7
|
+
};
|
|
8
|
+
export type SearchChatRequest = SearchChatRequestBase & {
|
|
6
9
|
userPrompt: string;
|
|
7
10
|
messageHistory: ChatMessage[];
|
|
8
|
-
|
|
11
|
+
};
|
|
12
|
+
export type SearchChatPraseAlternativesRequest = SearchChatRequestBase & {
|
|
13
|
+
phrases: string[];
|
|
14
|
+
};
|
|
15
|
+
export type SearchChatBestProductMatchesRequest = SearchChatRequestBase & {
|
|
16
|
+
initialQuery: string;
|
|
17
|
+
productStrings: string[];
|
|
18
|
+
messageHistory: ChatMessage[];
|
|
19
|
+
};
|
|
20
|
+
export type SearchChatTextRequest = SearchChatRequestBase & {
|
|
21
|
+
initialQuery: string;
|
|
22
|
+
messageHistory: ChatMessage[];
|
|
9
23
|
};
|