@sentecacommerce-theme/lib 0.11.76 → 0.11.80
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/cjs/hooks/basket-hooks/useBasketLineItem/index.js +3 -2
- package/dist/cjs/hooks/basket-hooks/useBasketLineItem/index.js.map +1 -1
- package/dist/cjs/hooks/useCatalogResult/index.js +3 -3
- package/dist/cjs/hooks/useCatalogResult/index.js.map +1 -1
- package/dist/cjs/hooks/useLineItem/index.js +3 -2
- package/dist/cjs/hooks/useLineItem/index.js.map +1 -1
- package/dist/cjs/listing/api/queries/useAggregateQuery.js +10 -2
- package/dist/cjs/listing/api/queries/useAggregateQuery.js.map +1 -1
- package/dist/cjs/listing/api/queries/useListingQuery.js +1 -1
- package/dist/cjs/listing/api/queries/useListingQuery.js.map +1 -1
- package/dist/cjs/listing/api/queries/usePredicate.js +2 -2
- package/dist/cjs/listing/api/queries/usePredicate.js.map +1 -1
- package/dist/cjs/listing/hooks/useListingBreadcrumbs.js +17 -3
- package/dist/cjs/listing/hooks/useListingBreadcrumbs.js.map +1 -1
- package/dist/cjs/listing/hooks/useListingCategories.js +20 -3
- package/dist/cjs/listing/hooks/useListingCategories.js.map +1 -1
- package/dist/cjs/listing/hooks/useListingFilters.js +1 -1
- package/dist/cjs/listing/hooks/useListingFilters.js.map +1 -1
- package/dist/cjs/listing/hooks/useListingMeta.js +4 -0
- package/dist/cjs/listing/hooks/useListingMeta.js.map +1 -1
- package/dist/cjs/listing/utils/getListingPageType.js +1 -1
- package/dist/cjs/listing/utils/getListingPageType.js.map +1 -1
- package/dist/cjs/ui/components/LazyImage.js.map +1 -1
- package/dist/cjs/utils/typeToSuffix.js +1 -0
- package/dist/cjs/utils/typeToSuffix.js.map +1 -1
- package/dist/esm/hooks/basket-hooks/useBasketLineItem/index.js +3 -2
- package/dist/esm/hooks/basket-hooks/useBasketLineItem/index.js.map +1 -1
- package/dist/esm/hooks/useCatalogResult/index.js +3 -3
- package/dist/esm/hooks/useCatalogResult/index.js.map +1 -1
- package/dist/esm/hooks/useLineItem/index.js +3 -2
- package/dist/esm/hooks/useLineItem/index.js.map +1 -1
- package/dist/esm/listing/api/queries/useAggregateQuery.js +10 -2
- package/dist/esm/listing/api/queries/useAggregateQuery.js.map +1 -1
- package/dist/esm/listing/api/queries/useListingQuery.js +1 -1
- package/dist/esm/listing/api/queries/useListingQuery.js.map +1 -1
- package/dist/esm/listing/api/queries/usePredicate.js +3 -2
- package/dist/esm/listing/api/queries/usePredicate.js.map +1 -1
- package/dist/esm/listing/hooks/useListingBreadcrumbs.js +17 -3
- package/dist/esm/listing/hooks/useListingBreadcrumbs.js.map +1 -1
- package/dist/esm/listing/hooks/useListingCategories.js +20 -3
- package/dist/esm/listing/hooks/useListingCategories.js.map +1 -1
- package/dist/esm/listing/hooks/useListingFilters.js +1 -1
- package/dist/esm/listing/hooks/useListingFilters.js.map +1 -1
- package/dist/esm/listing/hooks/useListingMeta.js +4 -0
- package/dist/esm/listing/hooks/useListingMeta.js.map +1 -1
- package/dist/esm/listing/utils/getListingPageType.js +1 -1
- package/dist/esm/listing/utils/getListingPageType.js.map +1 -1
- package/dist/esm/ui/components/LazyImage.js.map +1 -1
- package/dist/esm/utils/typeToSuffix.js +1 -0
- package/dist/esm/utils/typeToSuffix.js.map +1 -1
- package/dist/types/hooks/useLineItem/index.d.ts +1 -0
- package/dist/types/types/index.d.ts +1 -0
- package/dist/types/ui/components/LazyImage.d.ts +5 -5
- package/dist/types/utils/typeToSuffix.d.ts +1 -0
- package/package.json +5 -5
@@ -97,7 +97,7 @@ function generateFilter(type, query, predicate) {
|
|
97
97
|
return predicate == null ? void 0 : predicate.filters;
|
98
98
|
|
99
99
|
case ListingTypesEnum.Search:
|
100
|
-
return "text;eq;\"" + query.q + "\"";
|
100
|
+
return query.q ? "text;eq;\"" + query.q + "\"" : "category;eq;\"" + (predicate == null ? void 0 : predicate._id) + "\"&text;eq;\"" + query.search + "\"";
|
101
101
|
}
|
102
102
|
}
|
103
103
|
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../../src/listing/api/queries/useListingQuery.ts"],"names":["CatalogFilter","useQuery","useRouter","useListingConfig","useListingSlug","ListingQueryKeysEnum","usePredicate","ListingTypesEnum","calculateOffset","getListingPageType","getPostFilters","extendFilter","useListingQuery","router","slug","config","data","predicate","query","key","_id","postFilter","limit","productsPerPage","offset","page","queryKeys","type","sort","defaultSortKey","processListingQuery","filterExtension","refetchOnMount","refetchOnReconnect","refetchOnWindowFocus","enabled","isListingQueryEnabled","keepPreviousData","staleTime","filter","generateFilter","Category","cat","parseAttribute","Brand","Collection","View","filters","Search","q","val","split"],"mappings":"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
|
1
|
+
{"version":3,"sources":["../../../../../src/listing/api/queries/useListingQuery.ts"],"names":["CatalogFilter","useQuery","useRouter","useListingConfig","useListingSlug","ListingQueryKeysEnum","usePredicate","ListingTypesEnum","calculateOffset","getListingPageType","getPostFilters","extendFilter","useListingQuery","router","slug","config","data","predicate","query","key","_id","postFilter","limit","productsPerPage","offset","page","queryKeys","type","sort","defaultSortKey","processListingQuery","filterExtension","refetchOnMount","refetchOnReconnect","refetchOnWindowFocus","enabled","isListingQueryEnabled","keepPreviousData","staleTime","filter","generateFilter","Category","cat","parseAttribute","Brand","Collection","View","filters","Search","q","search","val","split"],"mappings":"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","sourcesContent":["import { CatalogFilter, CatalogFilterResultDTO } from '@sentecacommerce/sdk'\nimport { QueryResult, useQuery } from 'react-query'\nimport { NextRouter, useRouter } from 'next/router'\nimport { useListingConfig, useListingSlug } from '../../hooks'\nimport { ListingQueryKeysEnum, PredicateType, usePredicate } from '..'\nimport { ListingTypesEnum } from '../../types'\nimport {\n calculateOffset,\n getListingPageType,\n getPostFilters,\n extendFilter,\n} from '../../utils'\n\nexport const useListingQuery = (): QueryResult<\n CatalogFilterResultDTO,\n unknown\n> => {\n const router = useRouter()\n const slug = useListingSlug()\n const config = useListingConfig()\n const { data: predicate } = usePredicate()\n\n const { query } = router\n\n const key = predicate?._id ?? slug\n const postFilter = getPostFilters(router)\n const limit = config.productsPerPage || 24\n const offset = calculateOffset(query?.page as string, limit)\n\n const queryKeys = [\n ListingQueryKeysEnum.useListingQuery,\n config.type,\n key,\n query.sort ?? config.defaultSortKey,\n postFilter,\n offset,\n ]\n\n return useQuery(\n queryKeys,\n async () => {\n const data = processListingQuery({\n predicate,\n limit,\n sort: config?.defaultSortKey,\n router,\n postFilter,\n offset,\n filterExtension: config.filterExtension,\n })\n return data\n },\n {\n refetchOnMount: false,\n refetchOnReconnect: false,\n refetchOnWindowFocus: false,\n enabled: isListingQueryEnabled(config.type, predicate),\n keepPreviousData: true,\n staleTime: 30000,\n }\n )\n}\n\nexport async function processListingQuery({\n predicate,\n router,\n limit,\n sort,\n postFilter,\n offset,\n filterExtension,\n}: {\n predicate?: PredicateType\n router: NextRouter\n limit: number\n offset: number\n sort?: string\n postFilter?: string\n filterExtension?: string\n}) {\n const { query } = router\n\n const type = getListingPageType(router)\n\n const filter = generateFilter(type, query, predicate)\n\n return CatalogFilter({\n limit: limit,\n offset: offset || 0,\n filter: extendFilter(filter, filterExtension),\n sort: (query.sort ?? sort) as string,\n ...(query?.filter && { postFilter }),\n })\n}\n\nfunction generateFilter(\n type: ListingTypesEnum,\n query: any,\n predicate?: PredicateType\n) {\n switch (type) {\n case ListingTypesEnum.Category:\n if (query.cat) {\n return `category;eq;\"${predicate?._id}\"&${parseAttribute(query.slug)}`\n }\n return `category;eq;\"${predicate?._id}\"`\n case ListingTypesEnum.Brand:\n return `brand;eq;\"${predicate?._id}\"`\n case ListingTypesEnum.Collection:\n return `collection;eq;\"${predicate?._id}\"`\n case ListingTypesEnum.View:\n return predicate?.filters\n case ListingTypesEnum.Search:\n return query.q\n ? `text;eq;\"${query.q}\"`\n : `category;eq;\"${predicate?._id}\"&text;eq;\"${query.search}\"`\n }\n}\n\nexport function isListingQueryEnabled(type: string, predicate?: PredicateType) {\n if (type === ListingTypesEnum.Search) return true\n\n if (predicate?._id) return true\n\n return false\n}\n\nfunction parseAttribute(slug: string) {\n const [type, val] = slug.split('-')\n\n return `attr.${type};eq;\"${val}\"`\n}\n"],"file":"useListingQuery.js"}
|
@@ -32,10 +32,11 @@ export function processPredicateRequest(_x, _x2) {
|
|
32
32
|
|
33
33
|
function _processPredicateRequest() {
|
34
34
|
_processPredicateRequest = _asyncToGenerator(function* (slug, router) {
|
35
|
-
var pageType = getListingPageType(router);
|
35
|
+
var pageType = router.query.search ? ListingTypesEnum.Category : getListingPageType(router);
|
36
36
|
var allowedPages = {
|
37
37
|
[ListingTypesEnum.Category]: true,
|
38
|
-
[ListingTypesEnum.Brand]: true
|
38
|
+
[ListingTypesEnum.Brand]: true,
|
39
|
+
[ListingTypesEnum.Search]: Boolean(router.query.search)
|
39
40
|
};
|
40
41
|
if (!getBySlugMap[pageType]) return;
|
41
42
|
var config = {};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../../src/listing/api/queries/usePredicate.ts"],"names":["BrandsGetBySlug","CategoriesGetBySlug","ViewsGetBySlug","ProductsGetAttributeLabel","CollectionsGetBySlug","useQuery","useRouter","ListingTypesEnum","ListingQueryKeysEnum","getListingPageType","useListingSlug","getBySlugMap","Category","View","Brand","Collection","usePredicate","slug","router","attribute","query","cat","data","processPredicateRequest","refetchOnMount","refetchOnWindowFocus","retry","staleTime","pageType","allowedPages","config","expand","type","val","split","breadcrumb"],"mappings":";AAAA,SAIEA,eAJF,EAKEC,mBALF,EAMEC,cANF,EAOEC,yBAPF,EAQEC,oBARF,QASO,sBATP;AAUA,SAAsBC,QAAtB,QAAsC,aAAtC;AACA,SAAqBC,SAArB,QAAsC,aAAtC;AAEA,SAASC,gBAAT,QAAiC,aAAjC;AACA,SAASC,oBAAT,QAAqC,KAArC;AACA,SAASC,kBAAT,QAAmC,aAAnC;AACA,SAASC,cAAT,QAA+B,aAA/B;AAMA,IAAMC,YAAY,GAAG;AACnB,GAACJ,gBAAgB,CAACK,QAAlB,GAA6BX,mBADV;AAEnB,GAACM,gBAAgB,CAACM,IAAlB,GAAyBX,cAFN;AAGnB,GAACK,gBAAgB,CAACO,KAAlB,GAA0Bd,eAHP;AAInB,GAACO,gBAAgB,CAACQ,UAAlB,GAA+BX;AAJZ,CAArB;AAOA,OAAO,IAAMY,YAAY,GAAG,MAGvB;AACH,MAAMC,IAAI,GAAGP,cAAc,EAA3B;AACA,MAAMQ,MAAM,GAAGZ,SAAS,EAAxB;AACA,MAAMa,SAAS,GAAGD,MAAM,CAACE,KAAP,CAAaC,GAAb,IAAoBH,MAAM,CAACE,KAAP,CAAaH,IAAnD;AAEA,SAAOZ,QAAQ,CACb,CAACG,oBAAoB,CAACQ,YAAtB,EAAoCC,IAApC,EAA0CE,SAA1C,CADa,iCAEb,aAAY;AACV,QAAMG,IAAI,SAASC,uBAAuB,CAACN,IAAD,EAAOC,MAAP,CAA1C;AAEA,WAAOI,IAAP;AACD,GANY,GAOb;AACEE,IAAAA,cAAc,EAAE,KADlB;AAEEC,IAAAA,oBAAoB,EAAE,KAFxB;AAGEC,IAAAA,KAAK,EAAE,KAHT;AAIEC,IAAAA,SAAS,EAAE;AAJb,GAPa,CAAf;AAcD,CAtBM;AAwBP,gBAAsBJ,uBAAtB;AAAA;AAAA;;;+CAAO,WACLN,IADK,EAELC,MAFK,EAGL;AACA,QAAMU,QAAQ,
|
1
|
+
{"version":3,"sources":["../../../../../src/listing/api/queries/usePredicate.ts"],"names":["BrandsGetBySlug","CategoriesGetBySlug","ViewsGetBySlug","ProductsGetAttributeLabel","CollectionsGetBySlug","useQuery","useRouter","ListingTypesEnum","ListingQueryKeysEnum","getListingPageType","useListingSlug","getBySlugMap","Category","View","Brand","Collection","usePredicate","slug","router","attribute","query","cat","data","processPredicateRequest","refetchOnMount","refetchOnWindowFocus","retry","staleTime","pageType","search","allowedPages","Search","Boolean","config","expand","type","val","split","breadcrumb"],"mappings":";AAAA,SAIEA,eAJF,EAKEC,mBALF,EAMEC,cANF,EAOEC,yBAPF,EAQEC,oBARF,QASO,sBATP;AAUA,SAAsBC,QAAtB,QAAsC,aAAtC;AACA,SAAqBC,SAArB,QAAsC,aAAtC;AAEA,SAASC,gBAAT,QAAiC,aAAjC;AACA,SAASC,oBAAT,QAAqC,KAArC;AACA,SAASC,kBAAT,QAAmC,aAAnC;AACA,SAASC,cAAT,QAA+B,aAA/B;AAMA,IAAMC,YAAY,GAAG;AACnB,GAACJ,gBAAgB,CAACK,QAAlB,GAA6BX,mBADV;AAEnB,GAACM,gBAAgB,CAACM,IAAlB,GAAyBX,cAFN;AAGnB,GAACK,gBAAgB,CAACO,KAAlB,GAA0Bd,eAHP;AAInB,GAACO,gBAAgB,CAACQ,UAAlB,GAA+BX;AAJZ,CAArB;AAOA,OAAO,IAAMY,YAAY,GAAG,MAGvB;AACH,MAAMC,IAAI,GAAGP,cAAc,EAA3B;AACA,MAAMQ,MAAM,GAAGZ,SAAS,EAAxB;AACA,MAAMa,SAAS,GAAGD,MAAM,CAACE,KAAP,CAAaC,GAAb,IAAoBH,MAAM,CAACE,KAAP,CAAaH,IAAnD;AAEA,SAAOZ,QAAQ,CACb,CAACG,oBAAoB,CAACQ,YAAtB,EAAoCC,IAApC,EAA0CE,SAA1C,CADa,iCAEb,aAAY;AACV,QAAMG,IAAI,SAASC,uBAAuB,CAACN,IAAD,EAAOC,MAAP,CAA1C;AAEA,WAAOI,IAAP;AACD,GANY,GAOb;AACEE,IAAAA,cAAc,EAAE,KADlB;AAEEC,IAAAA,oBAAoB,EAAE,KAFxB;AAGEC,IAAAA,KAAK,EAAE,KAHT;AAIEC,IAAAA,SAAS,EAAE;AAJb,GAPa,CAAf;AAcD,CAtBM;AAwBP,gBAAsBJ,uBAAtB;AAAA;AAAA;;;+CAAO,WACLN,IADK,EAELC,MAFK,EAGL;AACA,QAAMU,QAAQ,GAAGV,MAAM,CAACE,KAAP,CAAaS,MAAb,GACbtB,gBAAgB,CAACK,QADJ,GAEbH,kBAAkB,CAACS,MAAD,CAFtB;AAIA,QAAMY,YAAY,GAAG;AACnB,OAACvB,gBAAgB,CAACK,QAAlB,GAA6B,IADV;AAEnB,OAACL,gBAAgB,CAACO,KAAlB,GAA0B,IAFP;AAGnB,OAACP,gBAAgB,CAACwB,MAAlB,GAA2BC,OAAO,CAACd,MAAM,CAACE,KAAP,CAAaS,MAAd;AAHf,KAArB;AAMA,QAAI,CAAClB,YAAY,CAACiB,QAAD,CAAjB,EAA6B;AAE7B,QAAIK,MAAM,GAAG,EAAb;;AAEA,QAAIH,YAAY,CAACF,QAAD,CAAhB,EAA4B;AAC1BK,MAAAA,MAAM,GAAG;AACPC,QAAAA,MAAM,EAAE;AADD,OAAT;AAGD;;AAED,QAAMZ,IAAI,SAASX,YAAY,CAACiB,QAAD,CAAZ,CAAuBX,IAAvB,EAA6BgB,MAA7B,CAAnB;;AAEA,QAAIf,MAAM,CAACE,KAAP,CAAaC,GAAjB,EAAsB;AAAA;;AACpB,UAAM,CAACc,IAAD,EAAOC,GAAP,IAAc,kBAAClB,MAAM,CAACE,KAAR,qBAAC,cAAcH,IAAf,EAA+BoB,KAA/B,CAAqC,GAArC,CAApB,CADoB,CAEpB;;AACA,UAAIf,IAAJ,EAAU;AACRA,QAAAA,IAAI,CAACgB,UAAL,SAAwBnC,yBAAyB,CAACgC,IAAD,EAAOC,GAAP,CAAjD;AACD;AACF;;AAED,WAAOd,IAAP;AACD,G","sourcesContent":["import {\n CategoryDTO,\n ViewDTO,\n BrandDTO,\n BrandsGetBySlug,\n CategoriesGetBySlug,\n ViewsGetBySlug,\n ProductsGetAttributeLabel,\n CollectionsGetBySlug,\n} from '@sentecacommerce/sdk'\nimport { QueryResult, useQuery } from 'react-query'\nimport { NextRouter, useRouter } from 'next/router'\n\nimport { ListingTypesEnum } from '../../types'\nimport { ListingQueryKeysEnum } from '../'\nimport { getListingPageType } from '../../utils'\nimport { useListingSlug } from '../../hooks'\n\nexport type PredicateType = CategoryDTO &\n ViewDTO &\n BrandDTO & { breadcrumb?: any }\n\nconst getBySlugMap = {\n [ListingTypesEnum.Category]: CategoriesGetBySlug,\n [ListingTypesEnum.View]: ViewsGetBySlug,\n [ListingTypesEnum.Brand]: BrandsGetBySlug,\n [ListingTypesEnum.Collection]: CollectionsGetBySlug,\n}\n\nexport const usePredicate = (): QueryResult<\n PredicateType | undefined,\n unknown\n> => {\n const slug = useListingSlug()\n const router = useRouter()\n const attribute = router.query.cat && router.query.slug\n\n return useQuery(\n [ListingQueryKeysEnum.usePredicate, slug, attribute],\n async () => {\n const data = await processPredicateRequest(slug, router)\n\n return data\n },\n {\n refetchOnMount: false,\n refetchOnWindowFocus: false,\n retry: false,\n staleTime: 30000,\n }\n )\n}\n\nexport async function processPredicateRequest(\n slug: string,\n router: NextRouter\n) {\n const pageType = router.query.search\n ? ListingTypesEnum.Category\n : getListingPageType(router)\n\n const allowedPages = {\n [ListingTypesEnum.Category]: true,\n [ListingTypesEnum.Brand]: true,\n [ListingTypesEnum.Search]: Boolean(router.query.search),\n }\n\n if (!getBySlugMap[pageType]) return\n\n let config = {}\n\n if (allowedPages[pageType]) {\n config = {\n expand: 'ancestors',\n }\n }\n\n const data = await getBySlugMap[pageType](slug, config)\n\n if (router.query.cat) {\n const [type, val] = (router.query?.slug as string).split('-')\n // TODO: type\n if (data) {\n data.breadcrumb = await ProductsGetAttributeLabel(type, val)\n }\n }\n\n return data\n}\n"],"file":"usePredicate.js"}
|
@@ -43,7 +43,7 @@ var createCatalogBreadcrumb = (predicate, type, router) => {
|
|
43
43
|
result.push({
|
44
44
|
name: getTranslatableField(predicate.breadcrumb.label),
|
45
45
|
id: predicate._id,
|
46
|
-
link: "/" + router.query.slug + "/" + getTranslatableField((sortedAncestors == null ? void 0 : (_sortedAncestors$ = sortedAncestors[0]) == null ? void 0 : _sortedAncestors$.slug) || (predicate == null ? void 0 : predicate.slug)) + "/c"
|
46
|
+
link: "/" + router.query.slug + "/" + getTranslatableField((sortedAncestors == null ? void 0 : (_sortedAncestors$ = sortedAncestors[0]) == null ? void 0 : _sortedAncestors$.slug) || (predicate == null ? void 0 : predicate.slug)) + "/c" + applyFilters(router.query.filter)
|
47
47
|
});
|
48
48
|
}
|
49
49
|
|
@@ -51,7 +51,7 @@ var createCatalogBreadcrumb = (predicate, type, router) => {
|
|
51
51
|
result.push({
|
52
52
|
name: getTranslatableField(ancestor.name),
|
53
53
|
id: ancestor._id,
|
54
|
-
link: processLink(ancestor.slug, type, attrLink)
|
54
|
+
link: processLink(ancestor.slug, type, attrLink) + applyFilters(router.query.filter)
|
55
55
|
});
|
56
56
|
});
|
57
57
|
|
@@ -59,13 +59,27 @@ var createCatalogBreadcrumb = (predicate, type, router) => {
|
|
59
59
|
result.push({
|
60
60
|
name: getTranslatableField(predicate == null ? void 0 : predicate.name),
|
61
61
|
id: predicate._id,
|
62
|
-
link: processLink(predicate == null ? void 0 : predicate.slug, type, attrLink)
|
62
|
+
link: processLink(predicate == null ? void 0 : predicate.slug, type, attrLink) + applyFilters(router.query.filter)
|
63
63
|
});
|
64
64
|
}
|
65
65
|
|
66
66
|
return result;
|
67
67
|
};
|
68
68
|
|
69
|
+
function applyFilters(filters) {
|
70
|
+
if (filters) {
|
71
|
+
console.log('here');
|
72
|
+
|
73
|
+
if (Array.isArray(filters)) {
|
74
|
+
return "?filter=" + filters.join('&filter=');
|
75
|
+
} else {
|
76
|
+
return "?filter=" + filters;
|
77
|
+
}
|
78
|
+
}
|
79
|
+
|
80
|
+
return '';
|
81
|
+
}
|
82
|
+
|
69
83
|
function processLink(slug, type, attr) {
|
70
84
|
if (attr) {
|
71
85
|
return "/" + attr + "/" + getTranslatableField(slug) + "/" + typeToSuffix[type];
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/listing/hooks/useListingBreadcrumbs.tsx"],"names":["React","useRouter","usePredicate","useListingConfig","typeToSuffix","getTranslatableField","useListingBreadcrumbs","data","isLoading","config","router","result","useMemo","query","q","name","id","link","createCatalogBreadcrumb","type","lastBreadcrumb","length","last","predicate","sortedAncestors","sortAncestors","ancestors","attrLink","cat","slug","undefined","breadcrumb","push","label","_id","forEach","ancestor","processLink","
|
1
|
+
{"version":3,"sources":["../../../../src/listing/hooks/useListingBreadcrumbs.tsx"],"names":["React","useRouter","usePredicate","useListingConfig","typeToSuffix","getTranslatableField","useListingBreadcrumbs","data","isLoading","config","router","result","useMemo","query","q","name","id","link","createCatalogBreadcrumb","type","lastBreadcrumb","length","last","predicate","sortedAncestors","sortAncestors","ancestors","attrLink","cat","slug","undefined","breadcrumb","push","label","_id","applyFilters","filter","forEach","ancestor","processLink","filters","console","log","Array","isArray","join","attr","newAncestors","a","resource","tree","mapListToTree","treeToArray","list","map","node","roots","i","resourceId","children","parent","hasOwnProperty","concat","child","arr"],"mappings":"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","sourcesContent":["import React from 'react'\nimport { NextRouter, useRouter } from 'next/router'\nimport { PredicateType, usePredicate } from '../api'\nimport { useListingConfig } from './'\n\nimport { typeToSuffix } from '../../utils/typeToSuffix'\nimport { getTranslatableField } from '../../utils/getTranslatableField'\nimport { IdReferenceDTO, LangValue } from '@sentecacommerce/sdk'\n\nexport type Breadcrumb = { name: string; id: string; link: string }[]\n\nexport type UseListingBreadcrumbsResult = {\n data: {\n name: string\n id: string\n link: string\n }[]\n last: {\n name: string\n id: string\n link: string\n }\n isLoading: boolean\n}\n\nexport const useListingBreadcrumbs = (): UseListingBreadcrumbsResult => {\n const { data, isLoading } = usePredicate()\n const config = useListingConfig()\n const router = useRouter()\n\n const result = React.useMemo(() => {\n if (router.query.q) {\n return [\n {\n name: `${router.query.q}`,\n id: '',\n link: `/search?q=${router.query.q}`,\n },\n ]\n }\n\n return createCatalogBreadcrumb(data as PredicateType, config.type, router)\n }, [data, router.query.q, config.type])\n\n const lastBreadcrumb = React.useMemo(() => {\n return result?.[result?.length - 2]\n }, [result])\n\n return { data: result, last: lastBreadcrumb, isLoading }\n}\n\nconst createCatalogBreadcrumb = (\n predicate: PredicateType,\n type: string,\n router: NextRouter\n): Breadcrumb => {\n const result: {\n name: string\n id: string\n link: string\n }[] = []\n\n const sortedAncestors = sortAncestors(predicate?.ancestors)\n const attrLink = router.query.cat ? (router.query.slug as string) : undefined\n\n if (predicate?.breadcrumb) {\n result.push({\n name: getTranslatableField(predicate.breadcrumb.label),\n id: predicate._id,\n\n link: `/${router.query.slug}/${getTranslatableField(\n sortedAncestors?.[0]?.slug || predicate?.slug\n )}/c${applyFilters(router.query.filter)}`,\n })\n }\n\n sortedAncestors.forEach((ancestor) => {\n result.push({\n name: getTranslatableField(ancestor.name),\n id: ancestor._id,\n link:\n processLink(ancestor.slug, type, attrLink) +\n applyFilters(router.query.filter),\n })\n })\n\n if (predicate?.slug[0]) {\n result.push({\n name: getTranslatableField(predicate?.name),\n id: predicate._id,\n link:\n processLink(predicate?.slug, type, attrLink) +\n applyFilters(router.query.filter),\n })\n }\n\n return result\n}\nfunction applyFilters(filters?: string | string[]) {\n if (filters) {\n console.log('here')\n if (Array.isArray(filters)) {\n return `?filter=` + filters.join('&filter=')\n } else {\n return `?filter=` + filters\n }\n }\n\n return ''\n}\nfunction processLink(slug: LangValue[], type: string, attr?: string) {\n if (attr) {\n return `/${attr}/${getTranslatableField(slug)}/${typeToSuffix[type]}`\n }\n return `/${getTranslatableField(slug)}/${typeToSuffix[type]}`\n}\n\nfunction sortAncestors(ancestors?: IdReferenceDTO[]) {\n let result = []\n\n if (Array.isArray(ancestors)) {\n const newAncestors = ancestors.filter(\n (a) => a.resource && typeof a.resource === 'object'\n )\n\n if (newAncestors.length) {\n const tree = mapListToTree(newAncestors)\n\n result = treeToArray(tree)[0]\n }\n }\n\n return result\n}\n\nconst mapListToTree = (list: any[]) => {\n const map = {}\n let node\n const roots = []\n let i\n for (i = 0; i < list.length; i += 1) {\n map[list[i].resourceId] = i\n list[i].children = []\n }\n for (i = 0; i < list.length; i += 1) {\n node = list[i]\n if (\n node.resource.parent &&\n map.hasOwnProperty(node.resource.parent.resourceId)\n ) {\n list[map[node.resource.parent.resourceId]].children.push(node)\n } else {\n roots.push(node)\n }\n }\n return roots[0]\n}\n\nconst treeToArray = (node: any) =>\n (node.children.length ? [] : [[node.resource]]).concat(\n ...node.children.map((child: any) =>\n treeToArray(child).map((arr) => [node.resource].concat(arr))\n )\n )\n"],"file":"useListingBreadcrumbs.js"}
|
@@ -78,7 +78,9 @@ function generateUrl(current, router) {
|
|
78
78
|
}
|
79
79
|
|
80
80
|
if (pageType === ListingTypesEnum.Search) {
|
81
|
-
|
81
|
+
var _router$query$q;
|
82
|
+
|
83
|
+
res = "/" + getTranslatableField(current.meta.slug) + "/c?search=" + ((_router$query$q = router.query.q) != null ? _router$query$q : router.query.search);
|
82
84
|
}
|
83
85
|
|
84
86
|
var filter = router.query.filter;
|
@@ -102,7 +104,13 @@ function generateUrl(current, router) {
|
|
102
104
|
}
|
103
105
|
|
104
106
|
if (filter) {
|
105
|
-
if (
|
107
|
+
if (pageType === ListingTypesEnum.Search) {
|
108
|
+
if (Array.isArray(filter)) {
|
109
|
+
res += '&filter=' + filter.join('&filter=');
|
110
|
+
} else {
|
111
|
+
res += '&filter=' + filter;
|
112
|
+
}
|
113
|
+
} else if (Array.isArray(filter)) {
|
106
114
|
res += '?filter=' + filter.join('&filter=');
|
107
115
|
} else {
|
108
116
|
res += '?filter=' + filter;
|
@@ -117,13 +125,22 @@ function generateCurrentUrl(router) {
|
|
117
125
|
|
118
126
|
var suffix = typeToSuffix[getListingPageType(router)];
|
119
127
|
var res = "/" + router.query.slug + "/" + suffix;
|
128
|
+
var searchTerm = router.query.q || router.query.search;
|
120
129
|
|
121
130
|
if (router.query.cat) {
|
122
131
|
res = "/" + router.query.slug + "/" + router.query.cat + "/" + suffix;
|
123
132
|
}
|
124
133
|
|
134
|
+
if (getListingPageType(router) === ListingTypesEnum.Search) {
|
135
|
+
res += searchTerm ? '?search=' + searchTerm : '';
|
136
|
+
}
|
137
|
+
|
125
138
|
if ((_router$query = router.query) != null && _router$query.filter) {
|
126
|
-
|
139
|
+
if (getListingPageType(router) === ListingTypesEnum.Search) {
|
140
|
+
res += "&filter=" + getPostFilters(router);
|
141
|
+
} else {
|
142
|
+
res += "?filter=" + getPostFilters(router);
|
143
|
+
}
|
127
144
|
}
|
128
145
|
|
129
146
|
return res;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/listing/hooks/useListingCategories.tsx"],"names":["React","useRouter","useListingConfig","getTranslatableField","typeToSuffix","useAggregateQuery","AggregateRequestEnum","processCategoriesResponse","getAggregateTypeAndTerm","ListingTypesEnum","getListingPageType","getPostFilters","ListingCategoriesStateContext","createContext","undefined","ListingCategoriesProvider","children","router","categoryTreeConfig","data","aggData","isLoading","Categories","currentCategory","generateCurrentUrl","type","term","useMemo","response","nodes","map","current","buildNodes","categoryTree","buildCategories","useListingCategories","context","useContext","Error","generateUrl","suffix","pageType","res","Brand","query","slug","cat","Category","meta","View","Search","filter","Array","isArray","idx","findIndex","x","includes","key","join","parentId","name","url","categories","node","roots","i","length","hasOwnProperty","selectedNode","push"],"mappings":"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","sourcesContent":["import React from 'react'\nimport { NextRouter, useRouter } from 'next/router'\n\nimport { useListingConfig } from './useListingConfig'\nimport { getTranslatableField, typeToSuffix } from '../../utils'\nimport {\n useAggregateQuery,\n AggregateRequestEnum,\n AggregationResultType,\n} from '../api'\n\nimport { processCategoriesResponse, getAggregateTypeAndTerm } from './utils'\nimport { Aggregate, ListingTypesEnum } from '../types'\nimport { getListingPageType, getPostFilters } from '../utils'\n\nexport type Node = {\n children?: Node[]\n key: string\n parentId: string\n name: string\n url: string\n}\n\nexport type UseListingCategoriesResult = {\n data: Node[] | null\n isLoading: boolean\n currentCategory: string\n}\n\nconst ListingCategoriesStateContext = React.createContext<\n UseListingCategoriesResult | undefined\n>(undefined)\n\nexport function ListingCategoriesProvider({\n children,\n}: {\n children: React.ReactNode\n}) {\n const router = useRouter()\n const { categoryTreeConfig } = useListingConfig()\n\n const { data: aggData, isLoading } = useAggregateQuery(\n [categoryTreeConfig as Aggregate],\n AggregateRequestEnum.Categories\n )\n const currentCategory = generateCurrentUrl(router)\n const { type, term } = getAggregateTypeAndTerm(categoryTreeConfig)\n\n const data = React.useMemo(() => {\n if (aggData) {\n const response = processCategoriesResponse(aggData, type, term)\n\n const nodes = response.map((current) => buildNodes(current, router))\n\n const categoryTree = buildCategories(nodes)\n\n return categoryTree\n }\n return null\n }, [aggData, router])\n\n return (\n <ListingCategoriesStateContext.Provider\n value={{ data, isLoading, currentCategory }}\n >\n {children}\n </ListingCategoriesStateContext.Provider>\n )\n}\n\nexport const useListingCategories = () => {\n const context = React.useContext(ListingCategoriesStateContext)\n if (context === undefined) {\n throw new Error(\n 'useListingFilters must be used within a ListingFiltersProvider'\n )\n }\n return context\n}\n\nfunction generateUrl(current: AggregationResultType, router: NextRouter) {\n const suffix = typeToSuffix[getListingPageType(router)]\n const pageType = getListingPageType(router)\n let res\n\n if (pageType === ListingTypesEnum.Brand) {\n res = `/${router.query.slug}/${suffix}`\n if (router.query.cat) {\n res = `/${router.query.slug}/${router.query.cat}/${suffix}`\n }\n }\n if (pageType === ListingTypesEnum.Category) {\n res = `/${getTranslatableField(current.meta.slug)}/${suffix}`\n if (router.query.cat) {\n res = `/${router.query.slug}/${getTranslatableField(\n current.meta.slug\n )}/${suffix}`\n }\n }\n if (pageType === ListingTypesEnum.View) {\n res = `/${router.query.slug}/${getTranslatableField(\n current.meta.slug\n )}/${suffix}`\n }\n\n if (pageType === ListingTypesEnum.Search) {\n res = `/${getTranslatableField(current.meta.slug)}/c`\n }\n\n let filter = router.query.filter as any\n\n if (suffix === 'b') {\n if (filter) {\n if (Array.isArray(filter)) {\n filter = [...filter]\n const idx = filter.findIndex((x: any) => x.includes('category'))\n filter[idx] = `category;eq;\"${current.key}\"`\n } else {\n if (filter.includes('category')) {\n filter = `category;eq;\"${current.key}\"`\n } else {\n filter = [filter, `category;eq;\"${current.key}\"`]\n }\n }\n } else {\n filter = `category;eq;\"${current.key}\"`\n }\n }\n\n if (filter) {\n if (Array.isArray(filter)) {\n res += '?filter=' + filter.join('&filter=')\n } else {\n res += '?filter=' + filter\n }\n }\n\n return res as string\n}\n\nfunction generateCurrentUrl(router: NextRouter) {\n const suffix = typeToSuffix[getListingPageType(router)]\n let res = `/${router.query.slug}/${suffix}`\n\n if (router.query.cat) {\n res = `/${router.query.slug}/${router.query.cat}/${suffix}`\n }\n\n if (router.query?.filter) {\n res += '?filter=' + getPostFilters(router)\n }\n return res\n}\n\nfunction buildNodes(\n current: AggregationResultType,\n\n router: NextRouter\n): Node {\n return {\n parentId: current.meta.parentId,\n key: current.key,\n children: [],\n name: getTranslatableField(current.meta.name),\n url: generateUrl(current, router),\n }\n}\n\nfunction buildCategories(categories: Node[]): Node[] {\n const map = {}\n let node\n const roots = []\n let i\n\n for (i = 0; i < categories?.length; i += 1) {\n map[categories[i].key] = i\n categories[i].children = []\n }\n\n for (i = 0; i < categories?.length; i += 1) {\n node = categories[i]\n // ? map[node.parent.resourceId] handles the case when a product has specified categories\n // ? without any of the ancestor ones eg. have Man > Shoes > Loafers the product\n // ? has specified only Loafers or Shoes > Loafers.\n if (node.parentId && map.hasOwnProperty(node.parentId)) {\n if (node.key !== node.parentId) {\n const selectedNode = categories[map[node?.parentId]]\n selectedNode?.children?.push(node)\n }\n } else {\n roots.push(node)\n }\n }\n\n return roots\n}\n"],"file":"useListingCategories.js"}
|
1
|
+
{"version":3,"sources":["../../../../src/listing/hooks/useListingCategories.tsx"],"names":["React","useRouter","useListingConfig","getTranslatableField","typeToSuffix","useAggregateQuery","AggregateRequestEnum","processCategoriesResponse","getAggregateTypeAndTerm","ListingTypesEnum","getListingPageType","getPostFilters","ListingCategoriesStateContext","createContext","undefined","ListingCategoriesProvider","children","router","categoryTreeConfig","data","aggData","isLoading","Categories","currentCategory","generateCurrentUrl","type","term","useMemo","response","nodes","map","current","buildNodes","categoryTree","buildCategories","useListingCategories","context","useContext","Error","generateUrl","suffix","pageType","res","Brand","query","slug","cat","Category","meta","View","Search","q","search","filter","Array","isArray","idx","findIndex","x","includes","key","join","searchTerm","parentId","name","url","categories","node","roots","i","length","hasOwnProperty","selectedNode","push"],"mappings":"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","sourcesContent":["import React from 'react'\nimport { NextRouter, useRouter } from 'next/router'\n\nimport { useListingConfig } from './useListingConfig'\nimport { getTranslatableField, typeToSuffix } from '../../utils'\nimport {\n useAggregateQuery,\n AggregateRequestEnum,\n AggregationResultType,\n} from '../api'\n\nimport { processCategoriesResponse, getAggregateTypeAndTerm } from './utils'\nimport { Aggregate, ListingTypesEnum } from '../types'\nimport { getListingPageType, getPostFilters } from '../utils'\n\nexport type Node = {\n children?: Node[]\n key: string\n parentId: string\n name: string\n url: string\n}\n\nexport type UseListingCategoriesResult = {\n data: Node[] | null\n isLoading: boolean\n currentCategory: string\n}\n\nconst ListingCategoriesStateContext = React.createContext<\n UseListingCategoriesResult | undefined\n>(undefined)\n\nexport function ListingCategoriesProvider({\n children,\n}: {\n children: React.ReactNode\n}) {\n const router = useRouter()\n const { categoryTreeConfig } = useListingConfig()\n\n const { data: aggData, isLoading } = useAggregateQuery(\n [categoryTreeConfig as Aggregate],\n AggregateRequestEnum.Categories\n )\n const currentCategory = generateCurrentUrl(router)\n\n const { type, term } = getAggregateTypeAndTerm(categoryTreeConfig)\n\n const data = React.useMemo(() => {\n if (aggData) {\n const response = processCategoriesResponse(aggData, type, term)\n\n const nodes = response.map((current) => buildNodes(current, router))\n\n const categoryTree = buildCategories(nodes)\n\n return categoryTree\n }\n return null\n }, [aggData, router])\n\n return (\n <ListingCategoriesStateContext.Provider\n value={{ data, isLoading, currentCategory }}\n >\n {children}\n </ListingCategoriesStateContext.Provider>\n )\n}\n\nexport const useListingCategories = () => {\n const context = React.useContext(ListingCategoriesStateContext)\n if (context === undefined) {\n throw new Error(\n 'useListingFilters must be used within a ListingFiltersProvider'\n )\n }\n return context\n}\n\nfunction generateUrl(current: AggregationResultType, router: NextRouter) {\n const suffix = typeToSuffix[getListingPageType(router)]\n const pageType = getListingPageType(router)\n let res\n\n if (pageType === ListingTypesEnum.Brand) {\n res = `/${router.query.slug}/${suffix}`\n if (router.query.cat) {\n res = `/${router.query.slug}/${router.query.cat}/${suffix}`\n }\n }\n if (pageType === ListingTypesEnum.Category) {\n res = `/${getTranslatableField(current.meta.slug)}/${suffix}`\n if (router.query.cat) {\n res = `/${router.query.slug}/${getTranslatableField(\n current.meta.slug\n )}/${suffix}`\n }\n }\n if (pageType === ListingTypesEnum.View) {\n res = `/${router.query.slug}/${getTranslatableField(\n current.meta.slug\n )}/${suffix}`\n }\n\n if (pageType === ListingTypesEnum.Search) {\n res = `/${getTranslatableField(current.meta.slug)}/c?search=${\n router.query.q ?? router.query.search\n }`\n }\n\n let filter = router.query.filter as any\n\n if (suffix === 'b') {\n if (filter) {\n if (Array.isArray(filter)) {\n filter = [...filter]\n const idx = filter.findIndex((x: any) => x.includes('category'))\n filter[idx] = `category;eq;\"${current.key}\"`\n } else {\n if (filter.includes('category')) {\n filter = `category;eq;\"${current.key}\"`\n } else {\n filter = [filter, `category;eq;\"${current.key}\"`]\n }\n }\n } else {\n filter = `category;eq;\"${current.key}\"`\n }\n }\n\n if (filter) {\n if (pageType === ListingTypesEnum.Search) {\n if (Array.isArray(filter)) {\n res += '&filter=' + filter.join('&filter=')\n } else {\n res += '&filter=' + filter\n }\n } else if (Array.isArray(filter)) {\n res += '?filter=' + filter.join('&filter=')\n } else {\n res += '?filter=' + filter\n }\n }\n\n return res as string\n}\n\nfunction generateCurrentUrl(router: NextRouter) {\n const suffix = typeToSuffix[getListingPageType(router)]\n let res = `/${router.query.slug}/${suffix}`\n const searchTerm = router.query.q || router.query.search\n\n if (router.query.cat) {\n res = `/${router.query.slug}/${router.query.cat}/${suffix}`\n }\n\n if (getListingPageType(router) === ListingTypesEnum.Search) {\n res += searchTerm ? '?search=' + searchTerm : ''\n }\n\n if (router.query?.filter) {\n if (getListingPageType(router) === ListingTypesEnum.Search) {\n res += `&filter=` + getPostFilters(router)\n } else {\n res += `?filter=` + getPostFilters(router)\n }\n }\n return res\n}\n\nfunction buildNodes(\n current: AggregationResultType,\n\n router: NextRouter\n): Node {\n return {\n parentId: current.meta.parentId,\n key: current.key,\n children: [],\n name: getTranslatableField(current.meta.name),\n url: generateUrl(current, router),\n }\n}\n\nfunction buildCategories(categories: Node[]): Node[] {\n const map = {}\n let node\n const roots = []\n let i\n\n for (i = 0; i < categories?.length; i += 1) {\n map[categories[i].key] = i\n categories[i].children = []\n }\n\n for (i = 0; i < categories?.length; i += 1) {\n node = categories[i]\n // ? map[node.parent.resourceId] handles the case when a product has specified categories\n // ? without any of the ancestor ones eg. have Man > Shoes > Loafers the product\n // ? has specified only Loafers or Shoes > Loafers.\n if (node.parentId && map.hasOwnProperty(node.parentId)) {\n if (node.key !== node.parentId) {\n const selectedNode = categories[map[node?.parentId]]\n selectedNode?.children?.push(node)\n }\n } else {\n roots.push(node)\n }\n }\n\n return roots\n}\n"],"file":"useListingCategories.js"}
|
@@ -163,7 +163,7 @@ function manageFilter(pair, query, remove) {
|
|
163
163
|
|
164
164
|
function createAggregateQuery(type, slug, aggPair, remove, router) {
|
165
165
|
if (type === ListingTypesEnum.Search) {
|
166
|
-
return "/search?q=" + slug + "&" + manageFilter(aggPair, router.query, remove);
|
166
|
+
return router.query.q ? "/search?q=" + router.query.q + "&" + manageFilter(aggPair, router.query, remove) : "/" + slug + "/c?search=" + router.query.search + "&" + manageFilter(aggPair, router.query, remove);
|
167
167
|
}
|
168
168
|
|
169
169
|
if (router.query.cat) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/listing/hooks/useListingFilters.tsx"],"names":["React","useRouter","useListingConfig","useAggregateQuery","AggregateRequestEnum","ListingTypesEnum","useListingSlug","stripQueryProps","typeToSuffix","generateQueryStringFromQuery","getSelectedFilters","RangeAggregation","StatAggregation","TermAggregation","ListingFiltersStateContext","createContext","undefined","ListingFiltersProvider","children","aggregates","type","pageType","data","aggData","isLoading","isFetching","Filters","router","slug","useMemo","result","sort","a","b","order","map","currentAggregate","aggregationType","toString","term","aggregationDefinition","split","filter","filterDefinition","current","find","agg","name","generatedFilters","generateFilters","rawFilters","selectedCount","reduce","count","res","selected","attributeResult","label","component","items","raw","clearAll","push","pathname","query","filterByType","clearAllFilters","selectedFilters","useListingFilters","context","useContext","Error","results","currentTerm","filterKey","mapKey","includes","filtersOperatorsMap","meta","onClick","createAggregateQuery","aggType","aggKey","aggOperator","ranges","stats","terms","r","keysMap","key","from","to","manageFilter","pair","remove","stripped","q","replace","aggPair","Search","cat","filters","filterName"],"mappings":"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","sourcesContent":["import React from 'react'\nimport { useRouter } from 'next/router'\nimport { NextRouter } from 'next/router'\nimport { useListingConfig } from './useListingConfig'\nimport {\n useAggregateQuery,\n AggregateRequestEnum,\n AggregateType,\n AggregationResultType,\n} from '../api'\n\nimport { Aggregate, ListingTypesEnum } from '../types'\nimport { useListingSlug } from './useListingSlug'\n\nimport { stripQueryProps } from '../../utils/generateQueryFromRouter'\nimport { typeToSuffix } from '../../utils/typeToSuffix'\nimport { generateQueryStringFromQuery } from '../../utils/generateQueryStringFromQuery'\nimport {\n RangeAggregation,\n StatAggregation,\n TermAggregation,\n} from '@sentecacommerce/sdk'\nimport { getSelectedFilters } from '../../utils'\nexport {\n RangeAggregation,\n StatAggregation,\n TermAggregation,\n} from '@sentecacommerce/sdk'\n\ntype AggPair = {\n aggType: string\n aggKey: string\n aggOperator: string\n}\n\nexport type ListingAggregationResultType = {\n selected: boolean\n data: AggregationResultType\n meta: any\n aggregationType?: string\n onClick: () => void\n}\n\nexport type ListingAggregateType = {\n name: string\n component: string\n type: string\n selectedCount: number\n items: ListingAggregationResultType[]\n clearAll: () => void\n raw: StatAggregation | RangeAggregation | TermAggregation\n}\n\nexport type UseListingFiltersResult = {\n data?: ListingAggregateType[]\n clearAllFilters: () => void\n selectedFilters: ListingAggregationResultType[]\n isLoading: boolean\n isFetching: boolean\n}\n\nconst ListingFiltersStateContext = React.createContext<\n UseListingFiltersResult | undefined\n>(undefined)\n\nexport function ListingFiltersProvider({\n children,\n}: {\n children: React.ReactNode\n}) {\n const { aggregates, type: pageType } = useListingConfig()\n\n const { data: aggData, isLoading, isFetching } = useAggregateQuery(\n aggregates as Aggregate[],\n AggregateRequestEnum.Filters\n )\n\n const router = useRouter()\n const slug = useListingSlug()\n\n const data = React.useMemo(() => {\n if (!isLoading && aggData) {\n const result = aggregates\n ?.sort((a, b) => a.order - b.order)\n .map((currentAggregate) => {\n const type = currentAggregate.aggregationType.toString()\n const term = currentAggregate.aggregationDefinition.split(':')[0]\n const filter = currentAggregate.filterDefinition\n const current: AggregateType = aggData[type].find(\n (agg: AggregateType) => agg.name === term\n )\n\n const generatedFilters = generateFilters({\n rawFilters: current,\n filter,\n router,\n type,\n slug,\n pageType,\n })\n\n const selectedCount = generatedFilters?.reduce((count, res) => {\n if (res.selected) count++\n return count\n }, 0)\n\n const attributeResult = ({\n name: currentAggregate.label,\n component: currentAggregate.component,\n items: generatedFilters,\n selectedCount,\n raw: current,\n clearAll: () =>\n router.push({\n pathname: router.pathname,\n query: {\n ...router.query,\n filter: filterByType(router.query.filter, filter),\n },\n }),\n type: type,\n } as unknown) as ListingAggregateType\n\n return attributeResult\n })\n\n return result\n }\n return undefined\n }, [aggData, router])\n\n const clearAllFilters = () => {\n const query = { ...router.query }\n delete query.filter\n\n router.push({\n pathname: router.pathname,\n query,\n })\n }\n\n const selectedFilters = React.useMemo(() => {\n return getSelectedFilters(router, data as any) as any\n }, [router, data])\n\n return (\n <ListingFiltersStateContext.Provider\n value={{ data, clearAllFilters, selectedFilters, isLoading, isFetching }}\n >\n {children}\n </ListingFiltersStateContext.Provider>\n )\n}\n\nexport function useListingFilters() {\n const context = React.useContext(ListingFiltersStateContext)\n if (context === undefined) {\n throw new Error(\n 'useListingFilters must be used within a ListingFiltersProvider'\n )\n }\n return context\n}\n\nfunction generateFilters({\n rawFilters,\n type,\n filter,\n slug,\n router,\n pageType,\n}: {\n rawFilters: AggregateType\n type: string\n filter: string\n slug: string\n router: NextRouter\n pageType: ListingTypesEnum\n}) {\n return rawFilters.results\n ?.filter((res) => res.count > 0)\n ?.map((currentTerm) => {\n const filterKey = mapKey(currentTerm, type)\n\n const selected = !!router.query?.filter?.includes(\n `${filter};${filtersOperatorsMap[type]};${filterKey}`\n )\n\n return {\n data: currentTerm,\n selected,\n meta: currentTerm.meta,\n onClick: () => {\n router.push(\n createAggregateQuery(\n pageType,\n slug,\n {\n aggType: filter,\n aggKey: filterKey,\n aggOperator: filtersOperatorsMap[type],\n },\n selected,\n router\n )\n )\n },\n }\n })\n}\n\nexport const filtersOperatorsMap = {\n ranges: 'range',\n stats: 'range',\n terms: 'eq',\n}\n\nfunction mapKey(r: any, type: any) {\n const keysMap = {\n terms: `\"${r.key}\"`,\n ranges: `${r.from},${r.to}`,\n }\n if (!keysMap[type]) return r.key\n\n return keysMap[type]\n}\n\nfunction manageFilter(pair: AggPair, query: any, remove: boolean) {\n const stripped = stripQueryProps(query, ['page']) // reset pagination on filter\n let q = generateQueryStringFromQuery(stripped)\n let filter = `filter=${pair.aggType};${pair.aggOperator};${pair.aggKey}`\n if (remove) {\n q = q\n .replace(`&${filter}`, '')\n .replace(`${filter}&`, '')\n .replace(filter, '')\n filter = ''\n }\n const result = `${q ? q : ''}${filter ? `${q ? '&' : ''}${filter}` : ''}`\n return result\n}\n\nfunction createAggregateQuery(\n type: ListingTypesEnum,\n slug: string,\n aggPair: AggPair,\n remove: boolean,\n router: NextRouter\n) {\n if (type === ListingTypesEnum.Search) {\n return `/search?q=${slug}&${manageFilter(aggPair, router.query, remove)}`\n }\n\n if (router.query.cat) {\n return `/${router.query.slug}/${router.query.cat}/${\n typeToSuffix[type]\n }?${manageFilter(aggPair, router.query, remove)}`\n }\n\n return `/${slug}/${typeToSuffix[type]}?${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n}\n\nfunction filterByType(\n filters: string | string[] | undefined,\n filterName: string\n) {\n if (!filters) return\n\n if (typeof filters === 'string') {\n if (filters.includes(filterName)) return\n\n return filters\n }\n\n return filters.filter((filter) => !filter.includes(filterName))\n}\n"],"file":"useListingFilters.js"}
|
1
|
+
{"version":3,"sources":["../../../../src/listing/hooks/useListingFilters.tsx"],"names":["React","useRouter","useListingConfig","useAggregateQuery","AggregateRequestEnum","ListingTypesEnum","useListingSlug","stripQueryProps","typeToSuffix","generateQueryStringFromQuery","getSelectedFilters","RangeAggregation","StatAggregation","TermAggregation","ListingFiltersStateContext","createContext","undefined","ListingFiltersProvider","children","aggregates","type","pageType","data","aggData","isLoading","isFetching","Filters","router","slug","useMemo","result","sort","a","b","order","map","currentAggregate","aggregationType","toString","term","aggregationDefinition","split","filter","filterDefinition","current","find","agg","name","generatedFilters","generateFilters","rawFilters","selectedCount","reduce","count","res","selected","attributeResult","label","component","items","raw","clearAll","push","pathname","query","filterByType","clearAllFilters","selectedFilters","useListingFilters","context","useContext","Error","results","currentTerm","filterKey","mapKey","includes","filtersOperatorsMap","meta","onClick","createAggregateQuery","aggType","aggKey","aggOperator","ranges","stats","terms","r","keysMap","key","from","to","manageFilter","pair","remove","stripped","q","replace","aggPair","Search","search","cat","filters","filterName"],"mappings":"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","sourcesContent":["import React from 'react'\nimport { useRouter } from 'next/router'\nimport { NextRouter } from 'next/router'\nimport { useListingConfig } from './useListingConfig'\nimport {\n useAggregateQuery,\n AggregateRequestEnum,\n AggregateType,\n AggregationResultType,\n} from '../api'\n\nimport { Aggregate, ListingTypesEnum } from '../types'\nimport { useListingSlug } from './useListingSlug'\n\nimport { stripQueryProps } from '../../utils/generateQueryFromRouter'\nimport { typeToSuffix } from '../../utils/typeToSuffix'\nimport { generateQueryStringFromQuery } from '../../utils/generateQueryStringFromQuery'\nimport {\n RangeAggregation,\n StatAggregation,\n TermAggregation,\n} from '@sentecacommerce/sdk'\nimport { getSelectedFilters } from '../../utils'\nexport {\n RangeAggregation,\n StatAggregation,\n TermAggregation,\n} from '@sentecacommerce/sdk'\n\ntype AggPair = {\n aggType: string\n aggKey: string\n aggOperator: string\n}\n\nexport type ListingAggregationResultType = {\n selected: boolean\n data: AggregationResultType\n meta: any\n aggregationType?: string\n onClick: () => void\n}\n\nexport type ListingAggregateType = {\n name: string\n component: string\n type: string\n selectedCount: number\n items: ListingAggregationResultType[]\n clearAll: () => void\n raw: StatAggregation | RangeAggregation | TermAggregation\n}\n\nexport type UseListingFiltersResult = {\n data?: ListingAggregateType[]\n clearAllFilters: () => void\n selectedFilters: ListingAggregationResultType[]\n isLoading: boolean\n isFetching: boolean\n}\n\nconst ListingFiltersStateContext = React.createContext<\n UseListingFiltersResult | undefined\n>(undefined)\n\nexport function ListingFiltersProvider({\n children,\n}: {\n children: React.ReactNode\n}) {\n const { aggregates, type: pageType } = useListingConfig()\n\n const { data: aggData, isLoading, isFetching } = useAggregateQuery(\n aggregates as Aggregate[],\n AggregateRequestEnum.Filters\n )\n\n const router = useRouter()\n const slug = useListingSlug()\n\n const data = React.useMemo(() => {\n if (!isLoading && aggData) {\n const result = aggregates\n ?.sort((a, b) => a.order - b.order)\n .map((currentAggregate) => {\n const type = currentAggregate.aggregationType.toString()\n const term = currentAggregate.aggregationDefinition.split(':')[0]\n const filter = currentAggregate.filterDefinition\n const current: AggregateType = aggData[type].find(\n (agg: AggregateType) => agg.name === term\n )\n\n const generatedFilters = generateFilters({\n rawFilters: current,\n filter,\n router,\n type,\n slug,\n pageType,\n })\n\n const selectedCount = generatedFilters?.reduce((count, res) => {\n if (res.selected) count++\n return count\n }, 0)\n\n const attributeResult = ({\n name: currentAggregate.label,\n component: currentAggregate.component,\n items: generatedFilters,\n selectedCount,\n raw: current,\n clearAll: () =>\n router.push({\n pathname: router.pathname,\n query: {\n ...router.query,\n filter: filterByType(router.query.filter, filter),\n },\n }),\n type: type,\n } as unknown) as ListingAggregateType\n\n return attributeResult\n })\n\n return result\n }\n return undefined\n }, [aggData, router])\n\n const clearAllFilters = () => {\n const query = { ...router.query }\n delete query.filter\n\n router.push({\n pathname: router.pathname,\n query,\n })\n }\n\n const selectedFilters = React.useMemo(() => {\n return getSelectedFilters(router, data as any) as any\n }, [router, data])\n\n return (\n <ListingFiltersStateContext.Provider\n value={{ data, clearAllFilters, selectedFilters, isLoading, isFetching }}\n >\n {children}\n </ListingFiltersStateContext.Provider>\n )\n}\n\nexport function useListingFilters() {\n const context = React.useContext(ListingFiltersStateContext)\n if (context === undefined) {\n throw new Error(\n 'useListingFilters must be used within a ListingFiltersProvider'\n )\n }\n return context\n}\n\nfunction generateFilters({\n rawFilters,\n type,\n filter,\n slug,\n router,\n pageType,\n}: {\n rawFilters: AggregateType\n type: string\n filter: string\n slug: string\n router: NextRouter\n pageType: ListingTypesEnum\n}) {\n return rawFilters.results\n ?.filter((res) => res.count > 0)\n ?.map((currentTerm) => {\n const filterKey = mapKey(currentTerm, type)\n\n const selected = !!router.query?.filter?.includes(\n `${filter};${filtersOperatorsMap[type]};${filterKey}`\n )\n\n return {\n data: currentTerm,\n selected,\n meta: currentTerm.meta,\n onClick: () => {\n router.push(\n createAggregateQuery(\n pageType,\n slug,\n {\n aggType: filter,\n aggKey: filterKey,\n aggOperator: filtersOperatorsMap[type],\n },\n selected,\n router\n )\n )\n },\n }\n })\n}\n\nexport const filtersOperatorsMap = {\n ranges: 'range',\n stats: 'range',\n terms: 'eq',\n}\n\nfunction mapKey(r: any, type: any) {\n const keysMap = {\n terms: `\"${r.key}\"`,\n ranges: `${r.from},${r.to}`,\n }\n if (!keysMap[type]) return r.key\n\n return keysMap[type]\n}\n\nfunction manageFilter(pair: AggPair, query: any, remove: boolean) {\n const stripped = stripQueryProps(query, ['page']) // reset pagination on filter\n let q = generateQueryStringFromQuery(stripped)\n let filter = `filter=${pair.aggType};${pair.aggOperator};${pair.aggKey}`\n if (remove) {\n q = q\n .replace(`&${filter}`, '')\n .replace(`${filter}&`, '')\n .replace(filter, '')\n filter = ''\n }\n const result = `${q ? q : ''}${filter ? `${q ? '&' : ''}${filter}` : ''}`\n return result\n}\n\nfunction createAggregateQuery(\n type: ListingTypesEnum,\n slug: string,\n aggPair: AggPair,\n remove: boolean,\n router: NextRouter\n) {\n if (type === ListingTypesEnum.Search) {\n return router.query.q\n ? `/search?q=${router.query.q}&${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n : `/${slug}/c?search=${router.query.search}&${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n }\n\n if (router.query.cat) {\n return `/${router.query.slug}/${router.query.cat}/${\n typeToSuffix[type]\n }?${manageFilter(aggPair, router.query, remove)}`\n }\n\n return `/${slug}/${typeToSuffix[type]}?${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n}\n\nfunction filterByType(\n filters: string | string[] | undefined,\n filterName: string\n) {\n if (!filters) return\n\n if (typeof filters === 'string') {\n if (filters.includes(filterName)) return\n\n return filters\n }\n\n return filters.filter((filter) => !filter.includes(filterName))\n}\n"],"file":"useListingFilters.js"}
|
@@ -80,6 +80,10 @@ function processDisplayName(name, breadcrumb, router, aggData, categoriesData) {
|
|
80
80
|
return categoryName + " \u043E\u0442 " + listingName;
|
81
81
|
}
|
82
82
|
|
83
|
+
if (type === ListingTypesEnum.Search && router != null && router.query.search) {
|
84
|
+
return listingName + " \u043E\u0442 \"" + router.query.search + "\"";
|
85
|
+
}
|
86
|
+
|
83
87
|
return listingName;
|
84
88
|
}
|
85
89
|
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/listing/hooks/useListingMeta.tsx"],"names":["React","useListingQuery","usePredicate","customFieldsToMap","escape","getTranslatableField","assetsFieldsToMap","useRouter","getListingPageType","ListingTypesEnum","useListingFilters","useListingCategories","useListingMeta","router","data","predicate","listingQuery","categoriesData","filtersData","result","useMemo","customFields","custom","assets","description","trim","displayName","processDisplayName","name","breadcrumb","metaTitle","metaKeywords","metaDescription","didYouMean","getAssetByKey","key","getCustomFieldByKey","aggData","listingName","brandName","getBrandName","categoryName","getCategoryName","type","query","cat","attribute","label","Category","Brand","getFilterByType","filterType","filterId","Array","isArray","filter","filters","x","includes","length","filterTerm","exec","isFiltered","brandId","brand","find","items","meta","categories","categoryId","stack","node","pop","children","forEach","child","push"],"mappings":"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","sourcesContent":["import React from 'react'\nimport { useListingQuery, usePredicate } from '../api'\nimport { customFieldsToMap, escape, getTranslatableField } from '../../utils'\n\nimport { assetsFieldsToMap, AssetType } from '../../utils/assetsToMap'\nimport { NextRouter, useRouter } from 'next/router'\nimport { LangValue } from '@sentecacommerce/sdk'\nimport { getListingPageType } from '../utils'\nimport { ListingTypesEnum } from '../types'\n\nimport { ListingAggregateType, useListingFilters } from './useListingFilters'\nimport { Node, useListingCategories } from './useListingCategories'\n\nexport type UseListingMetaResult = {\n displayName: string\n description: string\n\n metaTitle: string\n metaKeywords: string\n metaDescription: string\n\n didYouMean?: string\n\n getAssetByKey: (key: string) => AssetType | undefined\n getCustomFieldByKey: (key: string) => any | undefined\n}\n\nexport const useListingMeta = (): UseListingMetaResult => {\n const router = useRouter()\n const { data: predicate } = usePredicate()\n const { data: listingQuery } = useListingQuery()\n const { data: categoriesData } = useListingCategories()\n\n const { data: filtersData } = useListingFilters()\n\n const result = React.useMemo((): UseListingMetaResult => {\n const customFields = customFieldsToMap(predicate?.custom)\n const assets = assetsFieldsToMap(predicate?.assets)\n\n const description =\n getTranslatableField(predicate?.description)?.trim() || ''\n\n const displayName = processDisplayName(\n predicate?.name,\n predicate?.breadcrumb,\n router,\n filtersData,\n categoriesData\n )\n return {\n displayName,\n description,\n metaTitle: getTranslatableField(predicate?.metaTitle),\n metaKeywords: getTranslatableField(predicate?.metaKeywords),\n metaDescription: escape(\n getTranslatableField(predicate?.metaDescription) || description\n ),\n\n didYouMean: listingQuery?.didYouMean,\n\n getAssetByKey: (key: string) => assets[key],\n getCustomFieldByKey: (key: string) => customFields[key],\n }\n }, [\n predicate?.custom,\n predicate?.assets,\n predicate?.description,\n predicate?.name,\n predicate?.breadcrumb,\n predicate?.metaTitle,\n predicate?.metaKeywords,\n predicate?.metaDescription,\n router,\n filtersData,\n listingQuery?.didYouMean,\n categoriesData,\n ])\n\n return result\n}\n\nfunction processDisplayName(\n name?: LangValue[],\n breadcrumb?: any,\n router?: NextRouter,\n aggData?: ListingAggregateType[],\n categoriesData?: Node[] | null\n) {\n const listingName = getTranslatableField(name)\n const brandName = getBrandName(router, aggData)\n const categoryName = getCategoryName(router, categoriesData)\n\n const type = getListingPageType(router as NextRouter)\n if (router?.query.cat) {\n const attribute = getTranslatableField(breadcrumb?.label)\n if (type === ListingTypesEnum.Category) {\n if (!brandName) {\n return `${listingName} за ${attribute}`\n }\n\n return `${listingName} за ${attribute} от ${brandName}`\n }\n\n if (type === ListingTypesEnum.Brand) {\n if (!categoryName) {\n return `Всички продукти от ${listingName} за ${attribute}`\n }\n\n return `${categoryName} от ${listingName} за ${attribute}`\n }\n }\n\n if (type === ListingTypesEnum.Category && brandName) {\n return `${listingName} от ${brandName}`\n }\n\n if (type === ListingTypesEnum.Brand) {\n if (!categoryName) {\n return `Всички продукти от ${listingName}`\n }\n return `${categoryName} от ${listingName}`\n }\n return listingName\n}\n\nfunction getFilterByType(filterType: string, router?: NextRouter) {\n let filterId = ''\n if (Array.isArray(router?.query.filter)) {\n const filters = router?.query.filter?.filter((x) => x?.includes(filterType))\n if (filters?.length && filters.length > 1) {\n return ''\n }\n\n const filterTerm = /\\d+/.exec(filters?.[0] || '')?.[0]\n\n if (!filterTerm) return ''\n filterId = filterTerm\n } else {\n const isFiltered = router?.query?.filter?.includes(filterType)\n if (!isFiltered) {\n return ''\n }\n\n filterId = /(\\w+)-(\\d+)/.exec(router?.query.filter as string)?.[0] as string\n }\n return filterId\n}\n\nfunction getBrandName(\n router?: NextRouter,\n filtersData?: ListingAggregateType[]\n) {\n const brandId = getFilterByType('brand', router)\n\n const brand = filtersData\n ?.find((x) => x.name === 'Brands')\n ?.items?.find((x) => x.data.key === brandId)\n\n return getTranslatableField(brand?.meta?.name)\n}\nfunction getCategoryName(router?: NextRouter, categories?: Node[] | null) {\n const categoryId = getFilterByType('category', router)\n\n if (!categoryId || !categories) return\n\n const stack = [...(categories as Node[])]\n\n while (stack?.length && stack.length > 0) {\n const node = stack.pop()\n if (node?.key === categoryId) {\n return node.name\n }\n\n node?.children?.forEach((child) => stack.push(child))\n }\n}\n"],"file":"useListingMeta.js"}
|
1
|
+
{"version":3,"sources":["../../../../src/listing/hooks/useListingMeta.tsx"],"names":["React","useListingQuery","usePredicate","customFieldsToMap","escape","getTranslatableField","assetsFieldsToMap","useRouter","getListingPageType","ListingTypesEnum","useListingFilters","useListingCategories","useListingMeta","router","data","predicate","listingQuery","categoriesData","filtersData","result","useMemo","customFields","custom","assets","description","trim","displayName","processDisplayName","name","breadcrumb","metaTitle","metaKeywords","metaDescription","didYouMean","getAssetByKey","key","getCustomFieldByKey","aggData","listingName","brandName","getBrandName","categoryName","getCategoryName","type","query","cat","attribute","label","Category","Brand","Search","search","getFilterByType","filterType","filterId","Array","isArray","filter","filters","x","includes","length","filterTerm","exec","isFiltered","brandId","brand","find","items","meta","categories","categoryId","stack","node","pop","children","forEach","child","push"],"mappings":"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","sourcesContent":["import React from 'react'\nimport { useListingQuery, usePredicate } from '../api'\nimport { customFieldsToMap, escape, getTranslatableField } from '../../utils'\n\nimport { assetsFieldsToMap, AssetType } from '../../utils/assetsToMap'\nimport { NextRouter, useRouter } from 'next/router'\nimport { LangValue } from '@sentecacommerce/sdk'\nimport { getListingPageType } from '../utils'\nimport { ListingTypesEnum } from '../types'\n\nimport { ListingAggregateType, useListingFilters } from './useListingFilters'\nimport { Node, useListingCategories } from './useListingCategories'\n\nexport type UseListingMetaResult = {\n displayName: string\n description: string\n\n metaTitle: string\n metaKeywords: string\n metaDescription: string\n\n didYouMean?: string\n\n getAssetByKey: (key: string) => AssetType | undefined\n getCustomFieldByKey: (key: string) => any | undefined\n}\n\nexport const useListingMeta = (): UseListingMetaResult => {\n const router = useRouter()\n const { data: predicate } = usePredicate()\n const { data: listingQuery } = useListingQuery()\n const { data: categoriesData } = useListingCategories()\n\n const { data: filtersData } = useListingFilters()\n\n const result = React.useMemo((): UseListingMetaResult => {\n const customFields = customFieldsToMap(predicate?.custom)\n const assets = assetsFieldsToMap(predicate?.assets)\n\n const description =\n getTranslatableField(predicate?.description)?.trim() || ''\n\n const displayName = processDisplayName(\n predicate?.name,\n predicate?.breadcrumb,\n router,\n filtersData,\n categoriesData\n )\n return {\n displayName,\n description,\n metaTitle: getTranslatableField(predicate?.metaTitle),\n metaKeywords: getTranslatableField(predicate?.metaKeywords),\n metaDescription: escape(\n getTranslatableField(predicate?.metaDescription) || description\n ),\n\n didYouMean: listingQuery?.didYouMean,\n\n getAssetByKey: (key: string) => assets[key],\n getCustomFieldByKey: (key: string) => customFields[key],\n }\n }, [\n predicate?.custom,\n predicate?.assets,\n predicate?.description,\n predicate?.name,\n predicate?.breadcrumb,\n predicate?.metaTitle,\n predicate?.metaKeywords,\n predicate?.metaDescription,\n router,\n filtersData,\n listingQuery?.didYouMean,\n categoriesData,\n ])\n\n return result\n}\n\nfunction processDisplayName(\n name?: LangValue[],\n breadcrumb?: any,\n router?: NextRouter,\n aggData?: ListingAggregateType[],\n categoriesData?: Node[] | null\n) {\n const listingName = getTranslatableField(name)\n const brandName = getBrandName(router, aggData)\n const categoryName = getCategoryName(router, categoriesData)\n\n const type = getListingPageType(router as NextRouter)\n if (router?.query.cat) {\n const attribute = getTranslatableField(breadcrumb?.label)\n if (type === ListingTypesEnum.Category) {\n if (!brandName) {\n return `${listingName} за ${attribute}`\n }\n\n return `${listingName} за ${attribute} от ${brandName}`\n }\n\n if (type === ListingTypesEnum.Brand) {\n if (!categoryName) {\n return `Всички продукти от ${listingName} за ${attribute}`\n }\n\n return `${categoryName} от ${listingName} за ${attribute}`\n }\n }\n\n if (type === ListingTypesEnum.Category && brandName) {\n return `${listingName} от ${brandName}`\n }\n\n if (type === ListingTypesEnum.Brand) {\n if (!categoryName) {\n return `Всички продукти от ${listingName}`\n }\n return `${categoryName} от ${listingName}`\n }\n\n if (type === ListingTypesEnum.Search && router?.query.search) {\n return `${listingName} от \"${router.query.search}\"`\n }\n return listingName\n}\n\nfunction getFilterByType(filterType: string, router?: NextRouter) {\n let filterId = ''\n if (Array.isArray(router?.query.filter)) {\n const filters = router?.query.filter?.filter((x) => x?.includes(filterType))\n if (filters?.length && filters.length > 1) {\n return ''\n }\n\n const filterTerm = /\\d+/.exec(filters?.[0] || '')?.[0]\n\n if (!filterTerm) return ''\n filterId = filterTerm\n } else {\n const isFiltered = router?.query?.filter?.includes(filterType)\n if (!isFiltered) {\n return ''\n }\n\n filterId = /(\\w+)-(\\d+)/.exec(router?.query.filter as string)?.[0] as string\n }\n return filterId\n}\n\nfunction getBrandName(\n router?: NextRouter,\n filtersData?: ListingAggregateType[]\n) {\n const brandId = getFilterByType('brand', router)\n\n const brand = filtersData\n ?.find((x) => x.name === 'Brands')\n ?.items?.find((x) => x.data.key === brandId)\n\n return getTranslatableField(brand?.meta?.name)\n}\nfunction getCategoryName(router?: NextRouter, categories?: Node[] | null) {\n const categoryId = getFilterByType('category', router)\n\n if (!categoryId || !categories) return\n\n const stack = [...(categories as Node[])]\n\n while (stack?.length && stack.length > 0) {\n const node = stack.pop()\n if (node?.key === categoryId) {\n return node.name\n }\n\n node?.children?.forEach((child) => stack.push(child))\n }\n}\n"],"file":"useListingMeta.js"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/listing/utils/getListingPageType.ts"],"names":["ListingTypesEnum","getListingPageType","router","pageTypeMap","Category","Brand","View","Collection","query","q","Search","Error","route"],"mappings":"AACA,SAASA,gBAAT,QAAiC,IAAjC;AAEA,OAAO,IAAMC,kBAAkB,GAAIC,MAAD,IAA0C;AAC1E,MAAMC,WAAW,GAAG;AAClB,iBAAaH,gBAAgB,CAACI,QADZ;AAElB,iBAAaJ,gBAAgB,CAACK,KAFZ;AAGlB,iBAAaL,gBAAgB,CAACM,IAHZ;AAIlB,kBAAcN,gBAAgB,CAACO,UAJb;AAKlB,uBAAmBP,gBAAgB,CAACI,QALlB;AAMlB,uBAAmBJ,gBAAgB,CAACK;AANlB,GAApB;;AASA,MAAIH,MAAM,CAACM,KAAP,CAAaC,
|
1
|
+
{"version":3,"sources":["../../../../src/listing/utils/getListingPageType.ts"],"names":["ListingTypesEnum","getListingPageType","router","pageTypeMap","Category","Brand","View","Collection","query","q","search","Search","Error","route"],"mappings":"AACA,SAASA,gBAAT,QAAiC,IAAjC;AAEA,OAAO,IAAMC,kBAAkB,GAAIC,MAAD,IAA0C;AAC1E,MAAMC,WAAW,GAAG;AAClB,iBAAaH,gBAAgB,CAACI,QADZ;AAElB,iBAAaJ,gBAAgB,CAACK,KAFZ;AAGlB,iBAAaL,gBAAgB,CAACM,IAHZ;AAIlB,kBAAcN,gBAAgB,CAACO,UAJb;AAKlB,uBAAmBP,gBAAgB,CAACI,QALlB;AAMlB,uBAAmBJ,gBAAgB,CAACK;AANlB,GAApB;;AASA,MAAIH,MAAM,CAACM,KAAP,CAAaC,CAAb,IAAkBP,MAAM,CAACM,KAAP,CAAaE,MAAnC,EAA2C;AACzC,WAAOV,gBAAgB,CAACW,MAAxB;AACD;;AAED,MAAI,CAACR,WAAL,EAAkB,MAAM,IAAIS,KAAJ,CAAU,6BAAV,CAAN;AAElB,SAAOT,WAAW,CAACD,MAAM,CAACW,KAAR,CAAlB;AACD,CAjBM","sourcesContent":["import { NextRouter } from 'next/router'\nimport { ListingTypesEnum } from '..'\n\nexport const getListingPageType = (router: NextRouter): ListingTypesEnum => {\n const pageTypeMap = {\n '/[slug]/c': ListingTypesEnum.Category,\n '/[slug]/b': ListingTypesEnum.Brand,\n '/[slug]/v': ListingTypesEnum.View,\n '/[slug]/ct': ListingTypesEnum.Collection,\n '/[slug]/[cat]/c': ListingTypesEnum.Category,\n '/[slug]/[cat]/b': ListingTypesEnum.Brand,\n }\n\n if (router.query.q || router.query.search) {\n return ListingTypesEnum.Search\n }\n\n if (!pageTypeMap) throw new Error('Invalid listing route type!')\n\n return pageTypeMap[router.route]\n}\n"],"file":"getListingPageType.js"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/ui/components/LazyImage.tsx"],"names":["React","transparentPixel","LazyImage","width","height","alt","background","isBackgroundOverImage","rest","ratio","absoluteStyle","position","top","left","paddingBottom","undefined","backgroundColor","display","alignItems","justifyContent","objectFit"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAgBA,OAAO,IAAMC,gBAAgB,GAC3B,oHADK;AAGP,OAAO,IAAMC,SAAS,GAAG,UAQH;AAAA,MARI;AACxBC,IAAAA,KADwB;AAExBC,IAAAA,MAFwB;AAGxBC,IAAAA,GAHwB;AAIxBC,IAAAA,UAJwB;AAMxBC,IAAAA;AANwB,GAQJ;AAAA,MADjBC,IACiB;;AACpB,MAAMC,KAAK,GAAGL,MAAM,IAAID,KAAV,GAAkBC,MAAM,GAAGD,KAA3B,GAAmC,IAAjD;AAEA,MAAMO,aAAkB,GAAG;AACzBC,IAAAA,QAAQ,EAAE,UADe;AAEzBC,IAAAA,GAAG,EAAE,CAFoB;AAGzBC,IAAAA,IAAI,EAAE,CAHmB;AAIzBV,IAAAA,KAAK,EAAE,MAJkB;AAKzBC,IAAAA,MAAM,EAAE;AALiB,GAA3B;AAQA;AACF;AACA;;AACE,sBACE;AACE,IAAA,KAAK,EAAE;AACLO,MAAAA,QAAQ,EAAE,UADL;AAELG,MAAAA,aAAa,EAAEL,KAAK,GAAMA,KAAK,GAAG,GAAd,SAAuBM,SAFtC;AAGLZ,MAAAA,KAAK,EAAE,MAHF;AAILC,MAAAA,MAAM,EAAEK,KAAK,GAAG,CAAH,GAAOM,SAJf;AAKLC,MAAAA,eAAe,EAAEV;AALZ;AADT,kBASE;AACE,IAAA,KAAK,eACAI,aADA;AAEHO,MAAAA,OAAO,EAAE,MAFN;AAGHC,MAAAA,UAAU,EAAE,QAHT;AAIHC,MAAAA,cAAc,EAAE;AAJb;AADP,kBAQE;AACE,IAAA,KAAK,EAAE;AACLhB,MAAAA,KAAK,EAAE,MADF;AAELC,MAAAA,MAAM,EAAEK,KAAK,GAAG,MAAH,GAAY,MAFpB;AAGLW,MAAAA,SAAS,EAAE;AAHN;AADT,KAMMZ,IANN;AAOE,IAAA,GAAG,EAAEH;AAPP,KARF,CATF,EA2BGE,qBAAqB,iBACpB;AAAK,IAAA,KAAK,eAAOG,aAAP;AAAsBM,MAAAA,eAAe,EAAEV;AAAvC;AAAV,IA5BJ,CADF;AAiCD,CAvDM","sourcesContent":["import React from 'react'\n\nexport type LazyImageProps = {\n width?: number\n height?: number\n src
|
1
|
+
{"version":3,"sources":["../../../../src/ui/components/LazyImage.tsx"],"names":["React","transparentPixel","LazyImage","width","height","alt","background","isBackgroundOverImage","rest","ratio","absoluteStyle","position","top","left","paddingBottom","undefined","backgroundColor","display","alignItems","justifyContent","objectFit"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAgBA,OAAO,IAAMC,gBAAgB,GAC3B,oHADK;AAGP,OAAO,IAAMC,SAAS,GAAG,UAQH;AAAA,MARI;AACxBC,IAAAA,KADwB;AAExBC,IAAAA,MAFwB;AAGxBC,IAAAA,GAHwB;AAIxBC,IAAAA,UAJwB;AAMxBC,IAAAA;AANwB,GAQJ;AAAA,MADjBC,IACiB;;AACpB,MAAMC,KAAK,GAAGL,MAAM,IAAID,KAAV,GAAkBC,MAAM,GAAGD,KAA3B,GAAmC,IAAjD;AAEA,MAAMO,aAAkB,GAAG;AACzBC,IAAAA,QAAQ,EAAE,UADe;AAEzBC,IAAAA,GAAG,EAAE,CAFoB;AAGzBC,IAAAA,IAAI,EAAE,CAHmB;AAIzBV,IAAAA,KAAK,EAAE,MAJkB;AAKzBC,IAAAA,MAAM,EAAE;AALiB,GAA3B;AAQA;AACF;AACA;;AACE,sBACE;AACE,IAAA,KAAK,EAAE;AACLO,MAAAA,QAAQ,EAAE,UADL;AAELG,MAAAA,aAAa,EAAEL,KAAK,GAAMA,KAAK,GAAG,GAAd,SAAuBM,SAFtC;AAGLZ,MAAAA,KAAK,EAAE,MAHF;AAILC,MAAAA,MAAM,EAAEK,KAAK,GAAG,CAAH,GAAOM,SAJf;AAKLC,MAAAA,eAAe,EAAEV;AALZ;AADT,kBASE;AACE,IAAA,KAAK,eACAI,aADA;AAEHO,MAAAA,OAAO,EAAE,MAFN;AAGHC,MAAAA,UAAU,EAAE,QAHT;AAIHC,MAAAA,cAAc,EAAE;AAJb;AADP,kBAQE;AACE,IAAA,KAAK,EAAE;AACLhB,MAAAA,KAAK,EAAE,MADF;AAELC,MAAAA,MAAM,EAAEK,KAAK,GAAG,MAAH,GAAY,MAFpB;AAGLW,MAAAA,SAAS,EAAE;AAHN;AADT,KAMMZ,IANN;AAOE,IAAA,GAAG,EAAEH;AAPP,KARF,CATF,EA2BGE,qBAAqB,iBACpB;AAAK,IAAA,KAAK,eAAOG,aAAP;AAAsBM,MAAAA,eAAe,EAAEV;AAAvC;AAAV,IA5BJ,CADF;AAiCD,CAvDM","sourcesContent":["import React from 'react'\n\nexport type LazyImageProps = {\n width?: number\n height?: number\n src?: string\n srcSet?: string\n alt?: string\n background?: string\n isBackgroundOverImage?: boolean\n objectFit?: string\n} & React.DetailedHTMLProps<\n React.ImgHTMLAttributes<HTMLImageElement>,\n HTMLImageElement\n>\n\nexport const transparentPixel =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAAAAAA6fptVAAAACklEQVQYV2P4DwABAQEAWk1v8QAAAABJRU5ErkJggg=='\n\nexport const LazyImage = ({\n width,\n height,\n alt,\n background,\n objectFit,\n isBackgroundOverImage,\n ...rest\n}: LazyImageProps) => {\n const ratio = height && width ? height / width : null\n\n const absoluteStyle: any = {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n }\n\n /**\n * Using inline styles to support both styled components and postcss\n */\n return (\n <div\n style={{\n position: 'relative',\n paddingBottom: ratio ? `${ratio * 100}%` : undefined,\n width: '100%',\n height: ratio ? 0 : undefined,\n backgroundColor: background,\n }}\n >\n <div\n style={{\n ...absoluteStyle,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <img\n style={{\n width: '100%',\n height: ratio ? '100%' : 'auto',\n objectFit: 'contain',\n }}\n {...rest}\n alt={alt}\n />\n </div>\n {isBackgroundOverImage && (\n <div style={{ ...absoluteStyle, backgroundColor: background }} />\n )}\n </div>\n )\n}\n"],"file":"LazyImage.js"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/typeToSuffix.ts"],"names":["typeToSuffix","category","brand","view","collection"],"mappings":"AAAA,OAAO,IAAMA,YAAY,GAAG;AAC1BC,EAAAA,QAAQ,EAAE,GADgB;AAE1BC,EAAAA,
|
1
|
+
{"version":3,"sources":["../../../src/utils/typeToSuffix.ts"],"names":["typeToSuffix","category","text","brand","view","collection"],"mappings":"AAAA,OAAO,IAAMA,YAAY,GAAG;AAC1BC,EAAAA,QAAQ,EAAE,GADgB;AAE1BC,EAAAA,IAAI,EAAE,GAFoB;AAG1BC,EAAAA,KAAK,EAAE,GAHmB;AAI1BC,EAAAA,IAAI,EAAE,GAJoB;AAK1BC,EAAAA,UAAU,EAAE;AALc,CAArB","sourcesContent":["export const typeToSuffix = {\n category: 'c',\n text: 'c',\n brand: 'b',\n view: 'v',\n collection: 'ct',\n}\n"],"file":"typeToSuffix.js"}
|
@@ -2,12 +2,12 @@ import React from 'react';
|
|
2
2
|
export declare type LazyImageProps = {
|
3
3
|
width?: number;
|
4
4
|
height?: number;
|
5
|
-
src
|
6
|
-
srcSet
|
7
|
-
alt
|
8
|
-
background
|
5
|
+
src?: string;
|
6
|
+
srcSet?: string;
|
7
|
+
alt?: string;
|
8
|
+
background?: string;
|
9
9
|
isBackgroundOverImage?: boolean;
|
10
|
-
objectFit
|
10
|
+
objectFit?: string;
|
11
11
|
} & React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>;
|
12
12
|
export declare const transparentPixel = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAAAAAA6fptVAAAACklEQVQYV2P4DwABAQEAWk1v8QAAAABJRU5ErkJggg==";
|
13
13
|
export declare const LazyImage: ({ width, height, alt, background, objectFit, isBackgroundOverImage, ...rest }: LazyImageProps) => JSX.Element;
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@sentecacommerce-theme/lib",
|
3
3
|
"sideEffects": false,
|
4
|
-
"version": "0.11.
|
4
|
+
"version": "0.11.80",
|
5
5
|
"main": "dist/cjs/index.js",
|
6
6
|
"module": "dist/esm/index.js",
|
7
7
|
"types": "dist/types/index.d.ts",
|
@@ -27,9 +27,9 @@
|
|
27
27
|
"build:cjs": "cross-env BABEL_ENV=cjs babel src --root-mode upward --extensions .ts,.tsx -d dist/cjs --source-maps",
|
28
28
|
"build:types": "tsc --emitDeclarationOnly --declaration --declarationDir dist/types"
|
29
29
|
},
|
30
|
-
"gitHead": "
|
30
|
+
"gitHead": "ab549a856e27f43dccbdfe98fd4b2e63dc80e352",
|
31
31
|
"dependencies": {
|
32
|
-
"@sentecacommerce-theme/base": "^0.11.
|
32
|
+
"@sentecacommerce-theme/base": "^0.11.80",
|
33
33
|
"@sentecacommerce/sdk": "^2.0.89",
|
34
34
|
"body-scroll-lock": "^3.1.5",
|
35
35
|
"copy-to-clipboard": "^3.3.1",
|
@@ -45,9 +45,9 @@
|
|
45
45
|
"@types/js-cookie": "^2.2.7",
|
46
46
|
"@types/node-fetch": "^2.5.10",
|
47
47
|
"@types/resize-observer-browser": "^0.1.5",
|
48
|
-
"next": "^
|
48
|
+
"next": "^9.5.5",
|
49
49
|
"node-fetch": "^2.6.1",
|
50
|
-
"react": "^
|
50
|
+
"react": "^16.13.1",
|
51
51
|
"react-query": "^2.23.1",
|
52
52
|
"styled-components": "^5.2.1"
|
53
53
|
},
|