@depict-ai/ui 3.0.1 → 3.0.2
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/ES10/index.cjs +23 -80
- package/ES10/index.d.ts +15 -81
- package/ES10/index.js +23 -80
- package/latest/index.cjs +23 -77
- package/latest/index.d.ts +15 -81
- package/latest/index.js +23 -77
- package/package.json +1 -1
- package/server/ES10/index.cjs +23 -80
- package/server/ES10/index.d.ts +15 -81
- package/server/ES10/index.js +23 -80
- package/server/latest/index.cjs +23 -77
- package/server/latest/index.d.ts +15 -81
- package/server/latest/index.js +23 -77
package/latest/index.cjs
CHANGED
|
@@ -77,7 +77,7 @@ $parcel$export(module.exports, "defaultColsAtSize", () => $a3280f0aad997933$expo
|
|
|
77
77
|
$parcel$export(module.exports, "defaultCategoryTitlePlugin", () => $a3280f0aad997933$export$7bf543b9d9be2c22);
|
|
78
78
|
$parcel$export(module.exports, "version", () => $b757f75811f3261f$export$83d89fbfd8236492);
|
|
79
79
|
/*! Depict.ai search and product listing SDK */
|
|
80
|
-
const $b757f75811f3261f$export$83d89fbfd8236492 = "3.0.
|
|
80
|
+
const $b757f75811f3261f$export$83d89fbfd8236492 = "3.0.2";
|
|
81
81
|
const $0f313083912e447a$var$_tmpl$ = /*#__PURE__*/$gVhhF$solidjsweb.template(`<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 14 26"><path d="M2 24.656c-.078 0-.156-.016-.234-.047s-.133-.066-.187-.129c-.117-.117-.176-.258-.176-.422s.059-.305.176-.422l10.371-10.371L1.578 2.883c-.117-.117-.176-.258-.176-.422s.059-.305.176-.422.258-.176.422-.176.305.059.422.176l10.805 10.793a.59.59 0 0 1 .176.434c0 .172-.059.305-.176.422L2.422 24.48a.42.42 0 0 1-.199.129.54.54 0 0 1-.223.047zm0 0"fill=#0f0f0f>`);
|
|
82
82
|
function $0f313083912e447a$export$8be2714ec7f169ee(props = {}) {
|
|
83
83
|
return (() => {
|
|
@@ -5517,100 +5517,54 @@ class $e1d6c0f3d89d531c$export$e015ed2f2950f2e3 {
|
|
|
5517
5517
|
};
|
|
5518
5518
|
#get_metadata;
|
|
5519
5519
|
#get_session_id;
|
|
5520
|
-
#guard_url_creator_length(expected, received) {
|
|
5521
|
-
if (expected.length !== received.length) {
|
|
5522
|
-
const e = new Error("displayTransformer returned wrong number of page URLs, got " + received.length + ", expected " + expected.length);
|
|
5523
|
-
queueMicrotask(() => {
|
|
5524
|
-
throw e;
|
|
5525
|
-
});
|
|
5526
|
-
throw e;
|
|
5527
|
-
}
|
|
5528
|
-
}
|
|
5529
5520
|
async #run_url_creator_for_suggest(merchant, market, response) {
|
|
5530
|
-
const page_url_creator = this.page_url_creator;
|
|
5531
5521
|
const category_transformer = this.display_transformers?.categories;
|
|
5532
|
-
if (!
|
|
5522
|
+
if (!category_transformer) return response;
|
|
5533
5523
|
// find category suggestions, run thing with them, and then replace them
|
|
5534
5524
|
const category_suggestions = response.suggestions.filter(suggestion => suggestion.type === "category");
|
|
5535
|
-
const
|
|
5525
|
+
const transformed_category_suggestions = await category_transformer({
|
|
5536
5526
|
market: market,
|
|
5537
5527
|
merchant: merchant,
|
|
5538
|
-
data: [...category_suggestions]
|
|
5539
|
-
...(page_url_creator ? {
|
|
5540
|
-
type: "categories"
|
|
5541
|
-
} : {})
|
|
5528
|
+
data: [...category_suggestions]
|
|
5542
5529
|
});
|
|
5543
|
-
|
|
5544
|
-
while (page_urls.length)
|
|
5545
|
-
// Copy over getters so we sneakily can make this reactive
|
|
5546
|
-
Object.defineProperties(category_suggestions.pop(), Object.getOwnPropertyDescriptors(page_urls.pop()));
|
|
5530
|
+
response.suggestions = transformed_category_suggestions;
|
|
5547
5531
|
return response;
|
|
5548
5532
|
}
|
|
5549
5533
|
async #run_display_transformers_for_rest(merchant, market, input_data) {
|
|
5550
5534
|
const {
|
|
5551
|
-
page_url_creator: page_url_creator,
|
|
5552
5535
|
display_transformers: display_transformers
|
|
5553
5536
|
} = this;
|
|
5554
|
-
if (!
|
|
5537
|
+
if (!display_transformers) return input_data;
|
|
5555
5538
|
const product_transformer = display_transformers?.products;
|
|
5556
5539
|
const category_transformer = display_transformers?.categories;
|
|
5557
5540
|
const content_result_transformer = display_transformers?.contentResults;
|
|
5558
5541
|
const displays = input_data.displays;
|
|
5559
|
-
const owner = $gVhhF$solidjs.getOwner();
|
|
5560
5542
|
const {
|
|
5561
|
-
breadcrumbs: breadcrumbs,
|
|
5562
|
-
quick_links: quick_links,
|
|
5563
5543
|
content_search_links: content_search_links
|
|
5564
5544
|
} = input_data;
|
|
5565
|
-
if (displays &&
|
|
5566
|
-
const
|
|
5545
|
+
if (displays && product_transformer) {
|
|
5546
|
+
const transformed_displays = await product_transformer({
|
|
5567
5547
|
merchant: merchant,
|
|
5568
5548
|
market: market,
|
|
5569
|
-
displays: [...
|
|
5570
|
-
...(page_url_creator ? {
|
|
5571
|
-
type: "products"
|
|
5572
|
-
} : {})
|
|
5549
|
+
displays: [...displays]
|
|
5573
5550
|
});
|
|
5574
|
-
|
|
5575
|
-
for (let i = 0; i < displays.length; i++) {
|
|
5576
|
-
const new_display_or_page_url = page_urls[i];
|
|
5577
|
-
const old_display = displays[i];
|
|
5578
|
-
if ("page_url" in new_display_or_page_url && Object.keys(new_display_or_page_url).length === 1) {
|
|
5579
|
-
// they only returned page_url, let's put it into the display
|
|
5580
|
-
const old_display_was_modern = ("variant_index" in old_display);
|
|
5581
|
-
if (old_display_was_modern) {
|
|
5582
|
-
const variant_displays = old_display.variant_displays;
|
|
5583
|
-
for (let i = 0; i < variant_displays.length; i++) variant_displays[i].page_url = new_display_or_page_url.page_url;
|
|
5584
|
-
} else old_display.page_url = new_display_or_page_url.page_url;
|
|
5585
|
-
} else
|
|
5586
|
-
// We got a whole new display, let's replace it
|
|
5587
|
-
displays[i] = new_display_or_page_url;
|
|
5588
|
-
}
|
|
5551
|
+
input_data.displays = transformed_displays;
|
|
5589
5552
|
}
|
|
5590
|
-
if (
|
|
5553
|
+
if (category_transformer) for (const key of ["breadcrumbs", "quick_links"]) {
|
|
5554
|
+
const category_display_array = input_data[key];
|
|
5591
5555
|
if (!category_display_array) continue;
|
|
5592
|
-
const
|
|
5556
|
+
const transformed_category_displays = await category_transformer({
|
|
5593
5557
|
merchant: merchant,
|
|
5594
5558
|
market: market,
|
|
5595
|
-
data: [...category_display_array]
|
|
5596
|
-
|
|
5597
|
-
|
|
5598
|
-
} : {})
|
|
5599
|
-
}));
|
|
5600
|
-
this.#guard_url_creator_length(category_display_array, page_urls);
|
|
5601
|
-
for (let i = 0; i < category_display_array.length; i++)
|
|
5602
|
-
// Copy over getters so we sneakily can make this reactive
|
|
5603
|
-
Object.defineProperties(category_display_array[i], Object.getOwnPropertyDescriptors(page_urls[i]));
|
|
5604
|
-
}
|
|
5605
|
-
if (content_search_links?.length && content_result_transformer) {
|
|
5606
|
-
const result = await $gVhhF$solidjs.runWithOwner(owner, () => content_result_transformer({
|
|
5607
|
-
merchant: merchant,
|
|
5608
|
-
market: market,
|
|
5609
|
-
data: [...content_search_links]
|
|
5610
|
-
}));
|
|
5611
|
-
this.#guard_url_creator_length(content_search_links, result);
|
|
5612
|
-
input_data.content_search_links = result;
|
|
5559
|
+
data: [...category_display_array]
|
|
5560
|
+
});
|
|
5561
|
+
input_data[key] = transformed_category_displays;
|
|
5613
5562
|
}
|
|
5563
|
+
if (content_search_links?.length && content_result_transformer) input_data.content_search_links = await content_result_transformer({
|
|
5564
|
+
merchant: merchant,
|
|
5565
|
+
market: market,
|
|
5566
|
+
data: [...content_search_links]
|
|
5567
|
+
});
|
|
5614
5568
|
return input_data;
|
|
5615
5569
|
}
|
|
5616
5570
|
async #cached_request({
|
|
@@ -5622,7 +5576,6 @@ class $e1d6c0f3d89d531c$export$e015ed2f2950f2e3 {
|
|
|
5622
5576
|
}) {
|
|
5623
5577
|
const cache_obj = this.#get_cache_obj_for_endpoint(endpoint_);
|
|
5624
5578
|
const with_ids = this.#add_ids_to_request(input_req_);
|
|
5625
|
-
const owner = $gVhhF$solidjs.getOwner();
|
|
5626
5579
|
const metaData = await this.#get_metadata?.();
|
|
5627
5580
|
const request = metaData ? Object.assign(with_ids, {
|
|
5628
5581
|
metadata: metaData
|
|
@@ -5650,7 +5603,7 @@ class $e1d6c0f3d89d531c$export$e015ed2f2950f2e3 {
|
|
|
5650
5603
|
let result;
|
|
5651
5604
|
try {
|
|
5652
5605
|
const unmodified_result = await api_response.json();
|
|
5653
|
-
result = await
|
|
5606
|
+
result = await this.#run_display_transformers_for_rest(input_req_.merchant, input_req_.market, unmodified_result);
|
|
5654
5607
|
} catch (e) {
|
|
5655
5608
|
$gVhhF$depictaiutilishared.dwarn("displayTransformer or json decoding failed", e);
|
|
5656
5609
|
break return_successfully;
|
|
@@ -5681,17 +5634,14 @@ class $e1d6c0f3d89d531c$export$e015ed2f2950f2e3 {
|
|
|
5681
5634
|
const {
|
|
5682
5635
|
get_metadata: get_metadata,
|
|
5683
5636
|
get_session_id: get_session_id,
|
|
5684
|
-
page_url_creator: page_url_creator,
|
|
5685
5637
|
display_transformers: display_transformers
|
|
5686
5638
|
} = options ?? {};
|
|
5687
5639
|
this.#get_metadata = get_metadata;
|
|
5688
5640
|
this.#get_session_id = get_session_id;
|
|
5689
|
-
this.page_url_creator = page_url_creator;
|
|
5690
5641
|
this.display_transformers = display_transformers;
|
|
5691
5642
|
}
|
|
5692
5643
|
async suggest(input_req) {
|
|
5693
5644
|
const with_ids = this.#add_ids_to_request(input_req);
|
|
5694
|
-
const owner = $gVhhF$solidjs.getOwner();
|
|
5695
5645
|
const metaData = await this.#get_metadata?.();
|
|
5696
5646
|
const request = metaData ? Object.assign(with_ids, {
|
|
5697
5647
|
metadata: JSON.stringify(metaData)
|
|
@@ -5703,7 +5653,7 @@ class $e1d6c0f3d89d531c$export$e015ed2f2950f2e3 {
|
|
|
5703
5653
|
const decoded_json = await results.json();
|
|
5704
5654
|
if (!Array.isArray(decoded_json?.suggestions)) break attempt_to_return_api_response;
|
|
5705
5655
|
try {
|
|
5706
|
-
return await
|
|
5656
|
+
return await this.#run_url_creator_for_suggest(input_req.merchant, input_req.market, decoded_json);
|
|
5707
5657
|
} catch (e) {
|
|
5708
5658
|
$gVhhF$depictaiutilishared.dwarn("displayTransformer failed", e);
|
|
5709
5659
|
}
|
|
@@ -8848,7 +8798,6 @@ class $48567ac5b39bac56$export$f34314aa9505732e {
|
|
|
8848
8798
|
constructor({
|
|
8849
8799
|
api: api,
|
|
8850
8800
|
on_navigation: on_navigation,
|
|
8851
|
-
page_url_creator: page_url_creator,
|
|
8852
8801
|
display_transformers: display_transformers,
|
|
8853
8802
|
unique_instance_key_for_state = "",
|
|
8854
8803
|
listing_id_state_key: listing_id_state_key,
|
|
@@ -8899,7 +8848,6 @@ class $48567ac5b39bac56$export$f34314aa9505732e {
|
|
|
8899
8848
|
reset_history_state_: reset_history_state_,
|
|
8900
8849
|
// @ts-ignore
|
|
8901
8850
|
depict_api_: api ?? new (0, $e1d6c0f3d89d531c$export$e015ed2f2950f2e3)({
|
|
8902
|
-
page_url_creator: page_url_creator,
|
|
8903
8851
|
display_transformers: display_transformers
|
|
8904
8852
|
}),
|
|
8905
8853
|
router_: this.#router,
|
|
@@ -11756,7 +11704,6 @@ class $2c61e4cd8229c49a$export$ac6237957a15b3f0 {
|
|
|
11756
11704
|
url_transformer: url_transformer,
|
|
11757
11705
|
on_navigation: on_navigation,
|
|
11758
11706
|
enable_category_suggestions = true,
|
|
11759
|
-
page_url_creator: page_url_creator,
|
|
11760
11707
|
display_transformers: display_transformers,
|
|
11761
11708
|
api: api,
|
|
11762
11709
|
// Stuff needed for non-standard customer deployments that we shouldn't actually expose
|
|
@@ -11808,7 +11755,6 @@ class $2c61e4cd8229c49a$export$ac6237957a15b3f0 {
|
|
|
11808
11755
|
});
|
|
11809
11756
|
// @ts-ignore
|
|
11810
11757
|
const depict_api_ = api ?? new (0, $e1d6c0f3d89d531c$export$e015ed2f2950f2e3)({
|
|
11811
|
-
page_url_creator: page_url_creator,
|
|
11812
11758
|
display_transformers: display_transformers
|
|
11813
11759
|
});
|
|
11814
11760
|
const previous_searches = $2b7a005a65221045$export$84bba84a7b837187(get_search_query_);
|
package/latest/index.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ import { ProductListingRequestV3 } from "@depict-ai/types/api/ProductListingRequ
|
|
|
11
11
|
import { GetListingRequest } from "@depict-ai/types/api/GetListingRequest";
|
|
12
12
|
import { BaseSearchRequestV3 } from "@depict-ai/types/api/BaseSearchRequestV3";
|
|
13
13
|
import { SearchFilter as _SearchFilter2 } from "@depict-ai/types/api/SearchRequestV2";
|
|
14
|
-
export const version = "3.0.
|
|
14
|
+
export const version = "3.0.2";
|
|
15
15
|
/** @jsxImportSource solid-js */
|
|
16
16
|
export function GenericSliderArrowButton(props?: {
|
|
17
17
|
width_?: number;
|
|
@@ -603,56 +603,23 @@ export type DisplayTransformers<InputDisplay extends ModernDisplay, OutputDispla
|
|
|
603
603
|
products?: (options: DisplayTransformerAlwaysThereData & {
|
|
604
604
|
displays: InputDisplay[];
|
|
605
605
|
}) => CanBePromiseWrapped<OutputDisplay extends ModernDisplay ? ModernDisplayWithPageUrl<OutputDisplay>[] : never>;
|
|
606
|
-
categories?: (options: DisplayTransformerAlwaysThereData & {
|
|
607
|
-
data:
|
|
608
|
-
}) => CanBePromiseWrapped<{
|
|
606
|
+
categories?: <T extends Breadcrumb | Quicklink | CategorySuggestion>(options: DisplayTransformerAlwaysThereData & {
|
|
607
|
+
data: T[];
|
|
608
|
+
}) => CanBePromiseWrapped<(T & {
|
|
609
609
|
page_url: string;
|
|
610
|
-
}[]>;
|
|
610
|
+
})[]>;
|
|
611
611
|
contentResults?: (options: DisplayTransformerAlwaysThereData & {
|
|
612
612
|
data: ContentLink[];
|
|
613
613
|
}) => CanBePromiseWrapped<ContentLink[]>;
|
|
614
614
|
};
|
|
615
|
-
export type
|
|
616
|
-
page_url_creator?: PageURLCreator<InputDisplay, OutputDisplay>;
|
|
617
|
-
display_transformers?: never;
|
|
618
|
-
} | {
|
|
619
|
-
page_url_creator?: never;
|
|
615
|
+
export type SomethingTakingADisplayTransformers<InputDisplay extends Display, OutputDisplay extends ModernDisplay | never> = InputDisplay extends ModernDisplay ? "page_url" extends keyof InputDisplay["variant_displays"][number] ? {
|
|
620
616
|
display_transformers: DisplayTransformers<InputDisplay, OutputDisplay>;
|
|
621
617
|
} : {
|
|
622
|
-
page_url_creator: PageURLCreator<InputDisplay, OutputDisplay>;
|
|
623
|
-
display_transformers?: never;
|
|
624
|
-
} | {
|
|
625
618
|
display_transformers: DisplayTransformers<InputDisplay, OutputDisplay>;
|
|
626
|
-
page_url_creator?: never;
|
|
627
619
|
} : {
|
|
628
620
|
page_url_creator?: never;
|
|
629
621
|
display_transformers?: never;
|
|
630
622
|
};
|
|
631
|
-
type PageURLCreatorAlwaysThereData = {
|
|
632
|
-
merchant: string;
|
|
633
|
-
market: string;
|
|
634
|
-
};
|
|
635
|
-
type PageURLCreatorCategoryData = {
|
|
636
|
-
type: "categories";
|
|
637
|
-
data: (Breadcrumb | Quicklink | CategorySuggestion)[];
|
|
638
|
-
};
|
|
639
|
-
type PageURLCreatorProductData<T extends ModernDisplay> = {
|
|
640
|
-
displays: T[];
|
|
641
|
-
type: "products";
|
|
642
|
-
};
|
|
643
|
-
type PageURLCreatorOptions<InputDisplay extends ModernDisplay> = PageURLCreatorAlwaysThereData & (PageURLCreatorCategoryData | PageURLCreatorProductData<InputDisplay>);
|
|
644
|
-
/**
|
|
645
|
-
* @deprecated use DisplayTransformers instead
|
|
646
|
-
* PageUrlCreator is, in its most basic form, a function that takes in a list of categories or products and returns a list of page_urls for the provided categories or products.
|
|
647
|
-
* It's main use case is to allow for the creation of links to the product or category pages on the merchant's site.
|
|
648
|
-
* It can also be used for the depict customers which already have links to change those links (i.e. for staging sites).
|
|
649
|
-
* Also, it can be used to enrich the data for each product card in a batched way, which is why it can be an async function and return a whole display in the case of products.
|
|
650
|
-
*/
|
|
651
|
-
export type PageURLCreator<InputDisplay extends ModernDisplay, OutputDisplay extends ModernDisplay | never> = (options: PageURLCreatorOptions<InputDisplay>) => (typeof options)["type"] extends "categories" ? CanBePromiseWrapped<{
|
|
652
|
-
page_url: string;
|
|
653
|
-
}[]> : CanBePromiseWrapped<{
|
|
654
|
-
page_url: string;
|
|
655
|
-
}[]> | CanBePromiseWrapped<OutputDisplay extends ModernDisplay ? ModernDisplayWithPageUrl<OutputDisplay>[] : never>;
|
|
656
623
|
export type ExclusiveId = {
|
|
657
624
|
categoryId: string;
|
|
658
625
|
productId?: undefined;
|
|
@@ -731,21 +698,21 @@ type SearchSuggestionsResponseAfterURLCreator = { [K in keyof SearchSuggestionsR
|
|
|
731
698
|
type AddPageUrlToDisplay<T extends any[]> = (T[number] & {
|
|
732
699
|
page_url: string;
|
|
733
700
|
})[];
|
|
734
|
-
type
|
|
701
|
+
type SearchResponseAfterDisplayTransformer = { [K in keyof SearchResponse]: K extends "displays" ? AddPageUrlToDisplay<SearchResponse[K]> : K extends "filters" ? AddActualFieldToFilters<SearchResponse[K]> : SearchResponse[K] };
|
|
735
702
|
type QuicklinksOrBreadCrumbsWithPageURL<T extends Breadcrumb | Quicklink> = T & {
|
|
736
703
|
page_url: string;
|
|
737
704
|
};
|
|
738
705
|
type _AddPageUrlToDisplay1<T extends any[]> = (T[number] & {
|
|
739
706
|
page_url: string;
|
|
740
707
|
})[];
|
|
741
|
-
type
|
|
742
|
-
type
|
|
708
|
+
type ProductListingResponseAfterDisplayTransformer = { [K in keyof ProductListingResponseV3]: K extends "displays" ? _AddPageUrlToDisplay1<ProductListingResponseV3[K]> : K extends "filters" ? AddActualFieldToFilters<ProductListingResponseV3[K]> : ProductListingResponseV3[K] };
|
|
709
|
+
type GetListingResponseAfterDisplayTransformer = { [K in keyof GetListingResponse]: K extends "breadcrumbs" ? QuicklinksOrBreadCrumbsWithPageURL<Breadcrumb>[] : K extends "quick_links" ? QuicklinksOrBreadCrumbsWithPageURL<Quicklink>[] : GetListingResponse[K] };
|
|
743
710
|
type DepictAPIConstructorOptions<InputDisplay extends Display, OutputDisplay extends ModernDisplay | never> = {
|
|
744
711
|
get_metadata?: () => Promise<{
|
|
745
712
|
[k: string]: string;
|
|
746
713
|
} | undefined>;
|
|
747
714
|
get_session_id?: () => string | undefined;
|
|
748
|
-
} &
|
|
715
|
+
} & SomethingTakingADisplayTransformers<InputDisplay, OutputDisplay>;
|
|
749
716
|
interface GetListingOptions extends GetListingRequest {
|
|
750
717
|
listing_id: string;
|
|
751
718
|
session_id?: string;
|
|
@@ -757,21 +724,20 @@ interface GetListingOptions extends GetListingRequest {
|
|
|
757
724
|
*/
|
|
758
725
|
export class DepictAPI<InputDisplay extends Display, OutputDisplay extends ModernDisplay | never = InputDisplay extends ModernDisplay ? ModernDisplayWithPageUrl<InputDisplay> : never> {
|
|
759
726
|
#private;
|
|
760
|
-
page_url_creator: PageURLCreator<ModernDisplay, OutputDisplay> | undefined;
|
|
761
727
|
display_transformers: DisplayTransformers<ModernDisplay, OutputDisplay> | undefined;
|
|
762
728
|
constructor(options: DepictAPIConstructorOptions<InputDisplay, OutputDisplay>);
|
|
763
729
|
suggest(input_req: SearchSuggestionsRequestV3): Promise<SearchSuggestionsResponseAfterURLCreator & {
|
|
764
730
|
failed?: true;
|
|
765
731
|
}>;
|
|
766
|
-
query(input_req: SearchRequestV3): Promise<
|
|
732
|
+
query(input_req: SearchRequestV3): Promise<SearchResponseAfterDisplayTransformer & {
|
|
767
733
|
failed?: true;
|
|
768
734
|
}>;
|
|
769
|
-
get_listing(input_req: GetListingOptions): Promise<
|
|
735
|
+
get_listing(input_req: GetListingOptions): Promise<GetListingResponseAfterDisplayTransformer & {
|
|
770
736
|
failed?: true;
|
|
771
737
|
}>;
|
|
772
738
|
get_listing_products(input_req: ProductListingRequestV3 & {
|
|
773
739
|
listing_id: string;
|
|
774
|
-
}): Promise<
|
|
740
|
+
}): Promise<ProductListingResponseAfterDisplayTransformer & {
|
|
775
741
|
failed?: true;
|
|
776
742
|
}>;
|
|
777
743
|
get_recommended<T extends Display>(input_req: BaseSearchRequestV3): Promise<{
|
|
@@ -823,7 +789,7 @@ type CategoryConstructorOptionsWithApi<InputDisplay extends Display, OutputDispl
|
|
|
823
789
|
};
|
|
824
790
|
type CategoryConstructorOptionsWithoutApi<InputDisplay extends Display, OutputDisplay extends ModernDisplay | never> = GeneralCategoryListingOptions & {
|
|
825
791
|
api?: never;
|
|
826
|
-
} &
|
|
792
|
+
} & SomethingTakingADisplayTransformers<InputDisplay, OutputDisplay>;
|
|
827
793
|
type DepictCategoryConstructorOptions<InputDisplay extends Display, OutputDisplay extends ModernDisplay> = CategoryConstructorOptionsWithApi<InputDisplay, OutputDisplay> | CategoryConstructorOptionsWithoutApi<InputDisplay, OutputDisplay>;
|
|
828
794
|
export class DepictCategory<InputDisplay extends Display, OutputDisplay extends ModernDisplay | never = InputDisplay extends ModernDisplay ? ModernDisplayWithPageUrl<InputDisplay> : never> {
|
|
829
795
|
#private;
|
|
@@ -844,7 +810,6 @@ export class DepictCategory<InputDisplay extends Display, OutputDisplay extends
|
|
|
844
810
|
constructor({
|
|
845
811
|
api,
|
|
846
812
|
on_navigation,
|
|
847
|
-
page_url_creator,
|
|
848
813
|
display_transformers,
|
|
849
814
|
unique_instance_key_for_state,
|
|
850
815
|
listing_id_state_key,
|
|
@@ -929,7 +894,7 @@ type ConstructorOptionsWithApi<InputDisplay extends Display, OutputDisplay exten
|
|
|
929
894
|
};
|
|
930
895
|
type ConstructorOptionsWithoutAPI<InputDisplay extends Display, OutputDisplay extends ModernDisplay | never> = GeneralConstructorOptions<InputDisplay, OutputDisplay> & {
|
|
931
896
|
api?: never;
|
|
932
|
-
} &
|
|
897
|
+
} & SomethingTakingADisplayTransformers<InputDisplay, OutputDisplay>;
|
|
933
898
|
type ConstructorOptions<InputDisplay extends Display, OutputDisplay extends ModernDisplay> = ConstructorOptionsWithApi<InputDisplay, OutputDisplay> | ConstructorOptionsWithoutAPI<InputDisplay, OutputDisplay>;
|
|
934
899
|
export type OpenModalArguments = [options_for_modal?: {
|
|
935
900
|
style_props_?: Signal<JSX.CSSProperties>;
|
|
@@ -947,7 +912,6 @@ export class DepictSearch<InputDisplay extends Display, OutputDisplay extends Mo
|
|
|
947
912
|
url_transformer,
|
|
948
913
|
on_navigation,
|
|
949
914
|
enable_category_suggestions,
|
|
950
|
-
page_url_creator,
|
|
951
915
|
display_transformers,
|
|
952
916
|
api,
|
|
953
917
|
disable_scrolling_during_modal,
|
|
@@ -1024,46 +988,16 @@ export type BaseProviderConfig<InputDisplay extends Display, PossibleTransformed
|
|
|
1024
988
|
*/
|
|
1025
989
|
uniqueInstanceKeyForState?: string;
|
|
1026
990
|
} & (InputDisplay extends ModernDisplay ? "page_url" extends keyof InputDisplay["variant_displays"][number] ? {
|
|
1027
|
-
/**
|
|
1028
|
-
* @deprecated use displayTransformers instead
|
|
1029
|
-
*/
|
|
1030
|
-
pageURLCreator?: PageURLCreator<InputDisplay, PossibleTransformedDisplay>;
|
|
1031
|
-
/**
|
|
1032
|
-
* Functions that take in a list of categories, content search results or products and then can transform or enrich the data for each category, content search result or product card in a batched way.
|
|
1033
|
-
*/
|
|
1034
|
-
displayTransformers?: never;
|
|
1035
|
-
} | {
|
|
1036
|
-
/**
|
|
1037
|
-
* @deprecated use displayTransformers instead
|
|
1038
|
-
*/
|
|
1039
|
-
pageURLCreator?: never;
|
|
1040
991
|
/**
|
|
1041
992
|
* Functions that take in a list of categories, content search results or products and then can transform or enrich the data for each category, content search result or product card in a batched way.
|
|
1042
993
|
*/
|
|
1043
994
|
displayTransformers: DisplayTransformers<InputDisplay, PossibleTransformedDisplay>;
|
|
1044
995
|
} : {
|
|
1045
|
-
/**
|
|
1046
|
-
* @deprecated use displayTransformers instead
|
|
1047
|
-
*/
|
|
1048
|
-
pageURLCreator: PageURLCreator<InputDisplay, PossibleTransformedDisplay>;
|
|
1049
|
-
/**
|
|
1050
|
-
* Functions that take in a list of categories, content search results or products and then can transform or enrich the data for each category, content search result or product card in a batched way.
|
|
1051
|
-
*/
|
|
1052
|
-
displayTransformers?: never;
|
|
1053
|
-
} | {
|
|
1054
996
|
/**
|
|
1055
997
|
* Functions that take in a list of categories, content search results or products and then can transform or enrich the data for each category, content search result or product card in a batched way.
|
|
1056
998
|
*/
|
|
1057
999
|
displayTransformers: DisplayTransformers<InputDisplay, PossibleTransformedDisplay>;
|
|
1058
|
-
/**
|
|
1059
|
-
* @deprecated use displayTransformers instead
|
|
1060
|
-
*/
|
|
1061
|
-
pageURLCreator?: never;
|
|
1062
1000
|
} : {
|
|
1063
|
-
/**
|
|
1064
|
-
* @deprecated use displayTransformers instead
|
|
1065
|
-
*/
|
|
1066
|
-
pageURLCreator?: never;
|
|
1067
1001
|
/**
|
|
1068
1002
|
* Functions that take in a list of categories, content search results or products and then can transform or enrich the data for each category, content search result or product card in a batched way.
|
|
1069
1003
|
*/
|
package/latest/index.js
CHANGED
|
@@ -7,7 +7,7 @@ import { createStore as $9HbP8$createStore, reconcile as $9HbP8$reconcile } from
|
|
|
7
7
|
/*! Depict.ai search and product listing SDK */
|
|
8
8
|
import { register_es_version } from "../multi_import_deduplicator.mjs";
|
|
9
9
|
register_es_version("ui", "latest");
|
|
10
|
-
const $ec291e0010116877$export$83d89fbfd8236492 = "3.0.
|
|
10
|
+
const $ec291e0010116877$export$83d89fbfd8236492 = "3.0.2";
|
|
11
11
|
const $fbbadcb080ad1d4a$var$_tmpl$ = /*#__PURE__*/$9HbP8$template(`<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 14 26"><path d="M2 24.656c-.078 0-.156-.016-.234-.047s-.133-.066-.187-.129c-.117-.117-.176-.258-.176-.422s.059-.305.176-.422l10.371-10.371L1.578 2.883c-.117-.117-.176-.258-.176-.422s.059-.305.176-.422.258-.176.422-.176.305.059.422.176l10.805 10.793a.59.59 0 0 1 .176.434c0 .172-.059.305-.176.422L2.422 24.48a.42.42 0 0 1-.199.129.54.54 0 0 1-.223.047zm0 0"fill=#0f0f0f>`);
|
|
12
12
|
function $fbbadcb080ad1d4a$export$8be2714ec7f169ee(props = {}) {
|
|
13
13
|
return (() => {
|
|
@@ -5447,100 +5447,54 @@ class $7fa23e2a0079eca4$export$e015ed2f2950f2e3 {
|
|
|
5447
5447
|
};
|
|
5448
5448
|
#get_metadata;
|
|
5449
5449
|
#get_session_id;
|
|
5450
|
-
#guard_url_creator_length(expected, received) {
|
|
5451
|
-
if (expected.length !== received.length) {
|
|
5452
|
-
const e = new Error("displayTransformer returned wrong number of page URLs, got " + received.length + ", expected " + expected.length);
|
|
5453
|
-
queueMicrotask(() => {
|
|
5454
|
-
throw e;
|
|
5455
|
-
});
|
|
5456
|
-
throw e;
|
|
5457
|
-
}
|
|
5458
|
-
}
|
|
5459
5450
|
async #run_url_creator_for_suggest(merchant, market, response) {
|
|
5460
|
-
const page_url_creator = this.page_url_creator;
|
|
5461
5451
|
const category_transformer = this.display_transformers?.categories;
|
|
5462
|
-
if (!
|
|
5452
|
+
if (!category_transformer) return response;
|
|
5463
5453
|
// find category suggestions, run thing with them, and then replace them
|
|
5464
5454
|
const category_suggestions = response.suggestions.filter(suggestion => suggestion.type === "category");
|
|
5465
|
-
const
|
|
5455
|
+
const transformed_category_suggestions = await category_transformer({
|
|
5466
5456
|
market: market,
|
|
5467
5457
|
merchant: merchant,
|
|
5468
|
-
data: [...category_suggestions]
|
|
5469
|
-
...(page_url_creator ? {
|
|
5470
|
-
type: "categories"
|
|
5471
|
-
} : {})
|
|
5458
|
+
data: [...category_suggestions]
|
|
5472
5459
|
});
|
|
5473
|
-
|
|
5474
|
-
while (page_urls.length)
|
|
5475
|
-
// Copy over getters so we sneakily can make this reactive
|
|
5476
|
-
Object.defineProperties(category_suggestions.pop(), Object.getOwnPropertyDescriptors(page_urls.pop()));
|
|
5460
|
+
response.suggestions = transformed_category_suggestions;
|
|
5477
5461
|
return response;
|
|
5478
5462
|
}
|
|
5479
5463
|
async #run_display_transformers_for_rest(merchant, market, input_data) {
|
|
5480
5464
|
const {
|
|
5481
|
-
page_url_creator: page_url_creator,
|
|
5482
5465
|
display_transformers: display_transformers
|
|
5483
5466
|
} = this;
|
|
5484
|
-
if (!
|
|
5467
|
+
if (!display_transformers) return input_data;
|
|
5485
5468
|
const product_transformer = display_transformers?.products;
|
|
5486
5469
|
const category_transformer = display_transformers?.categories;
|
|
5487
5470
|
const content_result_transformer = display_transformers?.contentResults;
|
|
5488
5471
|
const displays = input_data.displays;
|
|
5489
|
-
const owner = $9HbP8$getOwner();
|
|
5490
5472
|
const {
|
|
5491
|
-
breadcrumbs: breadcrumbs,
|
|
5492
|
-
quick_links: quick_links,
|
|
5493
5473
|
content_search_links: content_search_links
|
|
5494
5474
|
} = input_data;
|
|
5495
|
-
if (displays &&
|
|
5496
|
-
const
|
|
5475
|
+
if (displays && product_transformer) {
|
|
5476
|
+
const transformed_displays = await product_transformer({
|
|
5497
5477
|
merchant: merchant,
|
|
5498
5478
|
market: market,
|
|
5499
|
-
displays: [...
|
|
5500
|
-
...(page_url_creator ? {
|
|
5501
|
-
type: "products"
|
|
5502
|
-
} : {})
|
|
5479
|
+
displays: [...displays]
|
|
5503
5480
|
});
|
|
5504
|
-
|
|
5505
|
-
for (let i = 0; i < displays.length; i++) {
|
|
5506
|
-
const new_display_or_page_url = page_urls[i];
|
|
5507
|
-
const old_display = displays[i];
|
|
5508
|
-
if ("page_url" in new_display_or_page_url && Object.keys(new_display_or_page_url).length === 1) {
|
|
5509
|
-
// they only returned page_url, let's put it into the display
|
|
5510
|
-
const old_display_was_modern = ("variant_index" in old_display);
|
|
5511
|
-
if (old_display_was_modern) {
|
|
5512
|
-
const variant_displays = old_display.variant_displays;
|
|
5513
|
-
for (let i = 0; i < variant_displays.length; i++) variant_displays[i].page_url = new_display_or_page_url.page_url;
|
|
5514
|
-
} else old_display.page_url = new_display_or_page_url.page_url;
|
|
5515
|
-
} else
|
|
5516
|
-
// We got a whole new display, let's replace it
|
|
5517
|
-
displays[i] = new_display_or_page_url;
|
|
5518
|
-
}
|
|
5481
|
+
input_data.displays = transformed_displays;
|
|
5519
5482
|
}
|
|
5520
|
-
if (
|
|
5483
|
+
if (category_transformer) for (const key of ["breadcrumbs", "quick_links"]) {
|
|
5484
|
+
const category_display_array = input_data[key];
|
|
5521
5485
|
if (!category_display_array) continue;
|
|
5522
|
-
const
|
|
5486
|
+
const transformed_category_displays = await category_transformer({
|
|
5523
5487
|
merchant: merchant,
|
|
5524
5488
|
market: market,
|
|
5525
|
-
data: [...category_display_array]
|
|
5526
|
-
|
|
5527
|
-
|
|
5528
|
-
} : {})
|
|
5529
|
-
}));
|
|
5530
|
-
this.#guard_url_creator_length(category_display_array, page_urls);
|
|
5531
|
-
for (let i = 0; i < category_display_array.length; i++)
|
|
5532
|
-
// Copy over getters so we sneakily can make this reactive
|
|
5533
|
-
Object.defineProperties(category_display_array[i], Object.getOwnPropertyDescriptors(page_urls[i]));
|
|
5534
|
-
}
|
|
5535
|
-
if (content_search_links?.length && content_result_transformer) {
|
|
5536
|
-
const result = await $9HbP8$runWithOwner(owner, () => content_result_transformer({
|
|
5537
|
-
merchant: merchant,
|
|
5538
|
-
market: market,
|
|
5539
|
-
data: [...content_search_links]
|
|
5540
|
-
}));
|
|
5541
|
-
this.#guard_url_creator_length(content_search_links, result);
|
|
5542
|
-
input_data.content_search_links = result;
|
|
5489
|
+
data: [...category_display_array]
|
|
5490
|
+
});
|
|
5491
|
+
input_data[key] = transformed_category_displays;
|
|
5543
5492
|
}
|
|
5493
|
+
if (content_search_links?.length && content_result_transformer) input_data.content_search_links = await content_result_transformer({
|
|
5494
|
+
merchant: merchant,
|
|
5495
|
+
market: market,
|
|
5496
|
+
data: [...content_search_links]
|
|
5497
|
+
});
|
|
5544
5498
|
return input_data;
|
|
5545
5499
|
}
|
|
5546
5500
|
async #cached_request({
|
|
@@ -5552,7 +5506,6 @@ class $7fa23e2a0079eca4$export$e015ed2f2950f2e3 {
|
|
|
5552
5506
|
}) {
|
|
5553
5507
|
const cache_obj = this.#get_cache_obj_for_endpoint(endpoint_);
|
|
5554
5508
|
const with_ids = this.#add_ids_to_request(input_req_);
|
|
5555
|
-
const owner = $9HbP8$getOwner();
|
|
5556
5509
|
const metaData = await this.#get_metadata?.();
|
|
5557
5510
|
const request = metaData ? Object.assign(with_ids, {
|
|
5558
5511
|
metadata: metaData
|
|
@@ -5580,7 +5533,7 @@ class $7fa23e2a0079eca4$export$e015ed2f2950f2e3 {
|
|
|
5580
5533
|
let result;
|
|
5581
5534
|
try {
|
|
5582
5535
|
const unmodified_result = await api_response.json();
|
|
5583
|
-
result = await
|
|
5536
|
+
result = await this.#run_display_transformers_for_rest(input_req_.merchant, input_req_.market, unmodified_result);
|
|
5584
5537
|
} catch (e) {
|
|
5585
5538
|
$9HbP8$dwarn("displayTransformer or json decoding failed", e);
|
|
5586
5539
|
break return_successfully;
|
|
@@ -5611,17 +5564,14 @@ class $7fa23e2a0079eca4$export$e015ed2f2950f2e3 {
|
|
|
5611
5564
|
const {
|
|
5612
5565
|
get_metadata: get_metadata,
|
|
5613
5566
|
get_session_id: get_session_id,
|
|
5614
|
-
page_url_creator: page_url_creator,
|
|
5615
5567
|
display_transformers: display_transformers
|
|
5616
5568
|
} = options ?? {};
|
|
5617
5569
|
this.#get_metadata = get_metadata;
|
|
5618
5570
|
this.#get_session_id = get_session_id;
|
|
5619
|
-
this.page_url_creator = page_url_creator;
|
|
5620
5571
|
this.display_transformers = display_transformers;
|
|
5621
5572
|
}
|
|
5622
5573
|
async suggest(input_req) {
|
|
5623
5574
|
const with_ids = this.#add_ids_to_request(input_req);
|
|
5624
|
-
const owner = $9HbP8$getOwner();
|
|
5625
5575
|
const metaData = await this.#get_metadata?.();
|
|
5626
5576
|
const request = metaData ? Object.assign(with_ids, {
|
|
5627
5577
|
metadata: JSON.stringify(metaData)
|
|
@@ -5633,7 +5583,7 @@ class $7fa23e2a0079eca4$export$e015ed2f2950f2e3 {
|
|
|
5633
5583
|
const decoded_json = await results.json();
|
|
5634
5584
|
if (!Array.isArray(decoded_json?.suggestions)) break attempt_to_return_api_response;
|
|
5635
5585
|
try {
|
|
5636
|
-
return await
|
|
5586
|
+
return await this.#run_url_creator_for_suggest(input_req.merchant, input_req.market, decoded_json);
|
|
5637
5587
|
} catch (e) {
|
|
5638
5588
|
$9HbP8$dwarn("displayTransformer failed", e);
|
|
5639
5589
|
}
|
|
@@ -8778,7 +8728,6 @@ class $961b5c64bef4662f$export$f34314aa9505732e {
|
|
|
8778
8728
|
constructor({
|
|
8779
8729
|
api: api,
|
|
8780
8730
|
on_navigation: on_navigation,
|
|
8781
|
-
page_url_creator: page_url_creator,
|
|
8782
8731
|
display_transformers: display_transformers,
|
|
8783
8732
|
unique_instance_key_for_state = "",
|
|
8784
8733
|
listing_id_state_key: listing_id_state_key,
|
|
@@ -8829,7 +8778,6 @@ class $961b5c64bef4662f$export$f34314aa9505732e {
|
|
|
8829
8778
|
reset_history_state_: reset_history_state_,
|
|
8830
8779
|
// @ts-ignore
|
|
8831
8780
|
depict_api_: api ?? new (0, $7fa23e2a0079eca4$export$e015ed2f2950f2e3)({
|
|
8832
|
-
page_url_creator: page_url_creator,
|
|
8833
8781
|
display_transformers: display_transformers
|
|
8834
8782
|
}),
|
|
8835
8783
|
router_: this.#router,
|
|
@@ -11686,7 +11634,6 @@ class $806c97b931758897$export$ac6237957a15b3f0 {
|
|
|
11686
11634
|
url_transformer: url_transformer,
|
|
11687
11635
|
on_navigation: on_navigation,
|
|
11688
11636
|
enable_category_suggestions = true,
|
|
11689
|
-
page_url_creator: page_url_creator,
|
|
11690
11637
|
display_transformers: display_transformers,
|
|
11691
11638
|
api: api,
|
|
11692
11639
|
// Stuff needed for non-standard customer deployments that we shouldn't actually expose
|
|
@@ -11738,7 +11685,6 @@ class $806c97b931758897$export$ac6237957a15b3f0 {
|
|
|
11738
11685
|
});
|
|
11739
11686
|
// @ts-ignore
|
|
11740
11687
|
const depict_api_ = api ?? new (0, $7fa23e2a0079eca4$export$e015ed2f2950f2e3)({
|
|
11741
|
-
page_url_creator: page_url_creator,
|
|
11742
11688
|
display_transformers: display_transformers
|
|
11743
11689
|
});
|
|
11744
11690
|
const previous_searches = $21f51c14cb3f586f$export$84bba84a7b837187(get_search_query_);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@depict-ai/ui",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.2",
|
|
4
4
|
"description": "Base package containing the actual UI of Depict UI along with translations, with a not-simplified API. We recommend using @depict-ai/js-ui or @depict-ai/react-ui instead.",
|
|
5
5
|
"packageManager": "yarn@3.2.2",
|
|
6
6
|
"sass": "styles.scss",
|