@sentecacommerce-theme/lib 0.11.64 → 0.11.68

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.
@@ -57,6 +57,14 @@ var useAggregateQuery = function useAggregateQuery(aggregates, request) {
57
57
  while (1) {
58
58
  switch (_context.prev = _context.next) {
59
59
  case 0:
60
+ if (aggregates[0]) {
61
+ _context.next = 2;
62
+ break;
63
+ }
64
+
65
+ return _context.abrupt("return");
66
+
67
+ case 2:
60
68
  query = prepareAggregateQuery({
61
69
  request: request,
62
70
  aggregates: aggregates,
@@ -66,14 +74,14 @@ var useAggregateQuery = function useAggregateQuery(aggregates, request) {
66
74
  slug: slug,
67
75
  filterExtension: config.filterExtension
68
76
  });
69
- _context.next = 3;
77
+ _context.next = 5;
70
78
  return (0, _sdk.CatalogAggregate)(query);
71
79
 
72
- case 3:
80
+ case 5:
73
81
  response = _context.sent;
74
82
  return _context.abrupt("return", response);
75
83
 
76
- case 5:
84
+ case 7:
77
85
  case "end":
78
86
  return _context.stop();
79
87
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/listing/api/queries/useAggregateQuery.ts"],"names":["AggregateRequestEnum","useAggregateQuery","aggregates","request","router","slug","predicate","data","config","postFilter","getPostFilters","aggregateKeys","generateAggregateKey","predicateId","_id","queryKeys","toString","query","prepareAggregateQuery","filterExtension","response","refetchOnMount","refetchOnWindowFocus","enabled","isQueryEnabled","keepPreviousData","staleTime","pageType","Categories","type","aggregationType","term","aggregationDefinition","aggValue","filter","ListingTypesEnum","Brand","applyBrandsPostFilter","cat","applyAttributePageFilter","Category","Filters","filters","queryType","Search","val","View","aggregatesMap","reduce","map","agg","aggregateType","aggregationTerm","aggregate","join","Array","isArray","hasCategory","includes","filtersArr","split","res","i"],"mappings":"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","sourcesContent":["import { useQuery } from 'react-query'\nimport {\n CatalogAggregate,\n RangeAggregationResult,\n TermAggregationResult,\n RangeAggregation,\n TermAggregation,\n StatAggregation,\n} from '@sentecacommerce/sdk'\nimport { NextRouter, useRouter } from 'next/router'\nimport { usePredicate, PredicateType } from './usePredicate'\nimport { useListingConfig, useListingSlug } from '../../hooks'\nimport { ListingTypesEnum } from '../../types'\nimport { extendFilter, getListingPageType } from '../../utils'\nimport { Aggregate } from '../../types'\nimport { getAttributePageType } from '../../hooks/utils'\nimport { canUseDOM } from '../../../utils'\n\nexport type AggregationResultType = RangeAggregationResult &\n TermAggregationResult &\n RangeAggregationResult\n\nexport type AggregateType = TermAggregation & StatAggregation & RangeAggregation\n\nexport enum AggregateRequestEnum {\n Filters = 'filters',\n Categories = 'categories',\n}\n\nexport const useAggregateQuery = (\n aggregates: Aggregate[],\n request: AggregateRequestEnum\n) => {\n const router = useRouter()\n const slug = useListingSlug()\n const { data: predicate } = usePredicate()\n const config = useListingConfig()\n const postFilter = getPostFilters(router)\n const aggregateKeys = generateAggregateKey(aggregates)\n const predicateId = predicate?._id\n\n const queryKeys = [request.toString(), aggregateKeys, slug, postFilter]\n\n return useQuery(\n queryKeys,\n async () => {\n const query = prepareAggregateQuery({\n request,\n aggregates,\n predicate,\n router,\n postFilter,\n slug,\n filterExtension: config.filterExtension,\n })\n\n const response = await CatalogAggregate(query)\n\n return response\n },\n {\n refetchOnMount: false,\n refetchOnWindowFocus: false,\n enabled: isQueryEnabled(router, predicateId),\n keepPreviousData: true,\n staleTime: 30000,\n }\n )\n}\n\nexport function prepareAggregateQuery({\n request,\n predicate,\n aggregates,\n router,\n postFilter,\n slug,\n filterExtension,\n}: {\n request: AggregateRequestEnum\n aggregates: Aggregate[]\n router: NextRouter\n postFilter: string | undefined\n predicate?: PredicateType\n filterExtension?: string\n slug: string\n}) {\n const pageType = getListingPageType(router)\n\n switch (request) {\n case AggregateRequestEnum.Categories: {\n const type = aggregates[0]?.aggregationType\n const term = aggregates?.[0].aggregationDefinition\n const aggValue =\n predicate?._id && term !== 'categories'\n ? `${term}:${predicate?._id}`\n : term\n\n return {\n [type]: aggValue,\n ...(filterExtension && {\n filter: filterExtension + `${postFilter ?? ''}`,\n }),\n ...(pageType === ListingTypesEnum.Brand && {\n filter: `brand;eq;\"${predicate?._id}\"${applyBrandsPostFilter({\n postFilter,\n })}`,\n }),\n ...(pageType === ListingTypesEnum.Brand &&\n router.query.cat && {\n filter:\n `brand;eq;\"${predicate?._id}\"` +\n `${applyBrandsPostFilter({\n postFilter,\n })}&` +\n applyAttributePageFilter(router),\n }),\n ...(pageType === ListingTypesEnum.Category &&\n (router.query.cat\n ? {\n filter:\n extendFilter(\n applyAttributePageFilter(router),\n filterExtension\n ) + `${postFilter ? '&' + postFilter : ''}`,\n }\n : {\n filter: `${postFilter ?? ''}`,\n })),\n // ...(router.query.cat && {\n // filter: extendFilter(\n // applyAttributePageFilter(router),\n // filterExtension\n // ),\n // }),\n // Using this to conditionally apply the postFilter\n // as it will fail if you do postFilter=undefined\n } as any\n }\n case AggregateRequestEnum.Filters: {\n const query = predicate?.filters || predicate?._id || slug\n\n const queryType = pageType === ListingTypesEnum.Search ? 'text' : pageType\n\n let filter = `${queryType};eq;\"${query}\"`\n if (router.query.cat) {\n const [type, val] = getAttributePageType(router)\n filter += `&attr.${type};eq;${val}`\n }\n if (pageType === ListingTypesEnum.View) {\n filter = query\n }\n\n const aggregatesMap = aggregates?.reduce((map, agg) => {\n const aggregateType = agg.aggregationType\n const aggregationTerm = agg.aggregationDefinition\n if (map[aggregateType]) {\n return {\n ...map,\n [aggregateType]: `${map[aggregateType]}&${aggregationTerm}`,\n }\n }\n\n return {\n ...map,\n [aggregateType]: `${aggregationTerm}`,\n }\n }, {})\n\n return {\n ...aggregatesMap,\n filter: extendFilter(filter, filterExtension),\n ...(router.query?.filter && { postFilter }),\n // Using this to conditionally apply the postFilter\n // as it will fail if you do postFilter=undefined\n } as any\n }\n }\n}\n\nexport function generateAggregateKey(aggregates?: Aggregate[]) {\n return aggregates\n ?.map((aggregate) => aggregate?.aggregationDefinition)\n ?.join('&')\n}\n\nfunction getPostFilters(router: NextRouter) {\n const { query } = router\n return query && Array.isArray(query.filter)\n ? query?.filter?.join('&')\n : (query?.filter as string)\n}\n\nfunction isQueryEnabled(router: NextRouter, predicate?: string) {\n const pageType = getListingPageType(router)\n\n if (pageType === ListingTypesEnum.Search) {\n return canUseDOM()\n }\n\n return !!predicate && canUseDOM()\n}\n\nfunction applyAttributePageFilter(router: NextRouter) {\n const [type, val] = getAttributePageType(router)\n return `attr.${type};eq;${val}`\n}\n\nconst applyBrandsPostFilter = ({ postFilter }: { postFilter?: string }) => {\n if (postFilter) {\n const hasCategory = postFilter.includes('category')\n const filtersArr = postFilter.split('&')\n\n const filters = filtersArr.reduce((res, val, i) => {\n if (val.includes('category')) return res\n\n if (i === 0 && hasCategory) {\n return (res += `${val}`)\n } else {\n return (res += `&${val}`)\n }\n }, '')\n\n return `${filters}`\n }\n\n return ''\n}\n"],"file":"useAggregateQuery.js"}
1
+ {"version":3,"sources":["../../../../../src/listing/api/queries/useAggregateQuery.ts"],"names":["AggregateRequestEnum","useAggregateQuery","aggregates","request","router","slug","predicate","data","config","postFilter","getPostFilters","aggregateKeys","generateAggregateKey","predicateId","_id","queryKeys","toString","query","prepareAggregateQuery","filterExtension","response","refetchOnMount","refetchOnWindowFocus","enabled","isQueryEnabled","keepPreviousData","staleTime","pageType","Categories","type","aggregationType","term","aggregationDefinition","aggValue","filter","ListingTypesEnum","Brand","applyBrandsPostFilter","cat","applyAttributePageFilter","Category","Filters","filters","queryType","Search","val","View","aggregatesMap","reduce","map","agg","aggregateType","aggregationTerm","aggregate","join","Array","isArray","hasCategory","includes","filtersArr","split","res","i"],"mappings":"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","sourcesContent":["import { useQuery } from 'react-query'\nimport {\n CatalogAggregate,\n RangeAggregationResult,\n TermAggregationResult,\n RangeAggregation,\n TermAggregation,\n StatAggregation,\n} from '@sentecacommerce/sdk'\nimport { NextRouter, useRouter } from 'next/router'\nimport { usePredicate, PredicateType } from './usePredicate'\nimport { useListingConfig, useListingSlug } from '../../hooks'\nimport { ListingTypesEnum } from '../../types'\nimport { extendFilter, getListingPageType } from '../../utils'\nimport { Aggregate } from '../../types'\nimport { getAttributePageType } from '../../hooks/utils'\nimport { canUseDOM } from '../../../utils'\n\nexport type AggregationResultType = RangeAggregationResult &\n TermAggregationResult &\n RangeAggregationResult\n\nexport type AggregateType = TermAggregation & StatAggregation & RangeAggregation\n\nexport enum AggregateRequestEnum {\n Filters = 'filters',\n Categories = 'categories',\n}\n\nexport const useAggregateQuery = (\n aggregates: Aggregate[],\n request: AggregateRequestEnum\n) => {\n const router = useRouter()\n const slug = useListingSlug()\n const { data: predicate } = usePredicate()\n const config = useListingConfig()\n const postFilter = getPostFilters(router)\n const aggregateKeys = generateAggregateKey(aggregates)\n const predicateId = predicate?._id\n\n const queryKeys = [request.toString(), aggregateKeys, slug, postFilter]\n\n return useQuery(\n queryKeys,\n async () => {\n // prevents an error in the case where a value of undefined is passed before hydration\n if (!aggregates[0]) return\n\n const query = prepareAggregateQuery({\n request,\n aggregates,\n predicate,\n router,\n postFilter,\n slug,\n filterExtension: config.filterExtension,\n })\n\n const response = await CatalogAggregate(query)\n\n return response\n },\n {\n refetchOnMount: false,\n refetchOnWindowFocus: false,\n enabled: isQueryEnabled(router, predicateId),\n keepPreviousData: true,\n staleTime: 30000,\n }\n )\n}\n\nexport function prepareAggregateQuery({\n request,\n predicate,\n aggregates,\n router,\n postFilter,\n slug,\n filterExtension,\n}: {\n request: AggregateRequestEnum\n aggregates: Aggregate[]\n router: NextRouter\n postFilter: string | undefined\n predicate?: PredicateType\n filterExtension?: string\n slug: string\n}) {\n const pageType = getListingPageType(router)\n\n switch (request) {\n case AggregateRequestEnum.Categories: {\n const type = aggregates[0]?.aggregationType\n const term = aggregates?.[0].aggregationDefinition\n const aggValue =\n predicate?._id && term !== 'categories'\n ? `${term}:${predicate?._id}`\n : term\n\n return {\n [type]: aggValue,\n ...(filterExtension && {\n filter: filterExtension + `${postFilter ?? ''}`,\n }),\n ...(pageType === ListingTypesEnum.Brand && {\n filter: `brand;eq;\"${predicate?._id}\"${applyBrandsPostFilter({\n postFilter,\n })}`,\n }),\n ...(pageType === ListingTypesEnum.Brand &&\n router.query.cat && {\n filter:\n `brand;eq;\"${predicate?._id}\"` +\n `${applyBrandsPostFilter({\n postFilter,\n })}&` +\n applyAttributePageFilter(router),\n }),\n ...(pageType === ListingTypesEnum.Category &&\n (router.query.cat\n ? {\n filter:\n extendFilter(\n applyAttributePageFilter(router),\n filterExtension\n ) + `${postFilter ? '&' + postFilter : ''}`,\n }\n : {\n filter: `${postFilter ?? ''}`,\n })),\n // ...(router.query.cat && {\n // filter: extendFilter(\n // applyAttributePageFilter(router),\n // filterExtension\n // ),\n // }),\n // Using this to conditionally apply the postFilter\n // as it will fail if you do postFilter=undefined\n } as any\n }\n case AggregateRequestEnum.Filters: {\n const query = predicate?.filters || predicate?._id || slug\n\n const queryType = pageType === ListingTypesEnum.Search ? 'text' : pageType\n\n let filter = `${queryType};eq;\"${query}\"`\n if (router.query.cat) {\n const [type, val] = getAttributePageType(router)\n filter += `&attr.${type};eq;${val}`\n }\n if (pageType === ListingTypesEnum.View) {\n filter = query\n }\n\n const aggregatesMap = aggregates?.reduce((map, agg) => {\n const aggregateType = agg.aggregationType\n const aggregationTerm = agg.aggregationDefinition\n if (map[aggregateType]) {\n return {\n ...map,\n [aggregateType]: `${map[aggregateType]}&${aggregationTerm}`,\n }\n }\n\n return {\n ...map,\n [aggregateType]: `${aggregationTerm}`,\n }\n }, {})\n\n return {\n ...aggregatesMap,\n filter: extendFilter(filter, filterExtension),\n ...(router.query?.filter && { postFilter }),\n // Using this to conditionally apply the postFilter\n // as it will fail if you do postFilter=undefined\n } as any\n }\n }\n}\n\nexport function generateAggregateKey(aggregates?: Aggregate[]) {\n return aggregates\n ?.map((aggregate) => aggregate?.aggregationDefinition)\n ?.join('&')\n}\n\nfunction getPostFilters(router: NextRouter) {\n const { query } = router\n return query && Array.isArray(query.filter)\n ? query?.filter?.join('&')\n : (query?.filter as string)\n}\n\nfunction isQueryEnabled(router: NextRouter, predicate?: string) {\n const pageType = getListingPageType(router)\n\n if (pageType === ListingTypesEnum.Search) {\n return canUseDOM()\n }\n\n return !!predicate && canUseDOM()\n}\n\nfunction applyAttributePageFilter(router: NextRouter) {\n const [type, val] = getAttributePageType(router)\n return `attr.${type};eq;${val}`\n}\n\nconst applyBrandsPostFilter = ({ postFilter }: { postFilter?: string }) => {\n if (postFilter) {\n const hasCategory = postFilter.includes('category')\n const filtersArr = postFilter.split('&')\n\n const filters = filtersArr.reduce((res, val, i) => {\n if (val.includes('category')) return res\n\n if (i === 0 && hasCategory) {\n return (res += `${val}`)\n } else {\n return (res += `&${val}`)\n }\n }, '')\n\n return `${filters}`\n }\n\n return ''\n}\n"],"file":"useAggregateQuery.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/listing/hooks/useListingCategories.tsx"],"names":["ListingCategoriesStateContext","React","createContext","undefined","ListingCategoriesProvider","children","router","categoryTreeConfig","AggregateRequestEnum","Categories","aggData","data","isLoading","currentCategory","generateCurrentUrl","type","term","useMemo","response","nodes","map","current","buildNodes","categoryTree","buildCategories","useListingCategories","context","useContext","Error","generateUrl","suffix","typeToSuffix","pageType","res","ListingTypesEnum","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 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":["ListingCategoriesStateContext","React","createContext","undefined","ListingCategoriesProvider","children","router","categoryTreeConfig","AggregateRequestEnum","Categories","aggData","data","isLoading","currentCategory","generateCurrentUrl","type","term","useMemo","response","nodes","map","current","buildNodes","categoryTree","buildCategories","useListingCategories","context","useContext","Error","generateUrl","suffix","typeToSuffix","pageType","res","ListingTypesEnum","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":";;;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;AAMA;;AACA;;AACA;;AAgBA,IAAMA,6BAA6B,gBAAGC,kBAAMC,aAAN,CAEpCC,SAFoC,CAAtC;;AAIO,SAASC,yBAAT,OAIJ;AAAA,MAHDC,QAGC,QAHDA,QAGC;AACD,MAAMC,MAAM,GAAG,wBAAf;;AADC,0BAE8B,0CAF9B;AAAA,MAEOC,kBAFP,qBAEOA,kBAFP;;AAAA,2BAIoC,4BACnC,CAACA,kBAAD,CADmC,EAEnCC,0BAAqBC,UAFc,CAJpC;AAAA,MAIaC,OAJb,sBAIOC,IAJP;AAAA,MAIsBC,SAJtB,sBAIsBA,SAJtB;;AAQD,MAAMC,eAAe,GAAGC,kBAAkB,CAACR,MAAD,CAA1C;;AARC,8BASsB,qCAAwBC,kBAAxB,CATtB;AAAA,MASOQ,IATP,yBASOA,IATP;AAAA,MASaC,IATb,yBASaA,IATb;;AAWD,MAAML,IAAI,GAAGV,kBAAMgB,OAAN,CAAc,YAAM;AAC/B,QAAIP,OAAJ,EAAa;AACX,UAAMQ,QAAQ,GAAG,uCAA0BR,OAA1B,EAAmCK,IAAnC,EAAyCC,IAAzC,CAAjB;AAEA,UAAMG,KAAK,GAAGD,QAAQ,CAACE,GAAT,CAAa,UAACC,OAAD;AAAA,eAAaC,UAAU,CAACD,OAAD,EAAUf,MAAV,CAAvB;AAAA,OAAb,CAAd;AAEA,UAAMiB,YAAY,GAAGC,eAAe,CAACL,KAAD,CAApC;AAEA,aAAOI,YAAP;AACD;;AACD,WAAO,IAAP;AACD,GAXY,EAWV,CAACb,OAAD,EAAUJ,MAAV,CAXU,CAAb;;AAaA,sBACE,gCAAC,6BAAD,CAA+B,QAA/B;AACE,IAAA,KAAK,EAAE;AAAEK,MAAAA,IAAI,EAAJA,IAAF;AAAQC,MAAAA,SAAS,EAATA,SAAR;AAAmBC,MAAAA,eAAe,EAAfA;AAAnB;AADT,KAGGR,QAHH,CADF;AAOD;;AAEM,IAAMoB,oBAAoB,GAAG,SAAvBA,oBAAuB,GAAM;AACxC,MAAMC,OAAO,GAAGzB,kBAAM0B,UAAN,CAAiB3B,6BAAjB,CAAhB;;AACA,MAAI0B,OAAO,KAAKvB,SAAhB,EAA2B;AACzB,UAAM,IAAIyB,KAAJ,CACJ,gEADI,CAAN;AAGD;;AACD,SAAOF,OAAP;AACD,CARM;;;;AAUP,SAASG,WAAT,CAAqBR,OAArB,EAAqDf,MAArD,EAAyE;AACvE,MAAMwB,MAAM,GAAGC,oBAAa,gCAAmBzB,MAAnB,CAAb,CAAf;;AACA,MAAM0B,QAAQ,GAAG,gCAAmB1B,MAAnB,CAAjB;AACA,MAAI2B,GAAJ;;AAEA,MAAID,QAAQ,KAAKE,wBAAiBC,KAAlC,EAAyC;AACvCF,IAAAA,GAAG,SAAO3B,MAAM,CAAC8B,KAAP,CAAaC,IAApB,SAA4BP,MAA/B;;AACA,QAAIxB,MAAM,CAAC8B,KAAP,CAAaE,GAAjB,EAAsB;AACpBL,MAAAA,GAAG,SAAO3B,MAAM,CAAC8B,KAAP,CAAaC,IAApB,SAA4B/B,MAAM,CAAC8B,KAAP,CAAaE,GAAzC,SAAgDR,MAAnD;AACD;AACF;;AACD,MAAIE,QAAQ,KAAKE,wBAAiBK,QAAlC,EAA4C;AAC1CN,IAAAA,GAAG,SAAO,iCAAqBZ,OAAO,CAACmB,IAAR,CAAaH,IAAlC,CAAP,SAAkDP,MAArD;;AACA,QAAIxB,MAAM,CAAC8B,KAAP,CAAaE,GAAjB,EAAsB;AACpBL,MAAAA,GAAG,SAAO3B,MAAM,CAAC8B,KAAP,CAAaC,IAApB,SAA4B,iCAC7BhB,OAAO,CAACmB,IAAR,CAAaH,IADgB,CAA5B,SAEEP,MAFL;AAGD;AACF;;AACD,MAAIE,QAAQ,KAAKE,wBAAiBO,IAAlC,EAAwC;AACtCR,IAAAA,GAAG,SAAO3B,MAAM,CAAC8B,KAAP,CAAaC,IAApB,SAA4B,iCAC7BhB,OAAO,CAACmB,IAAR,CAAaH,IADgB,CAA5B,SAEEP,MAFL;AAGD;;AAED,MAAIE,QAAQ,KAAKE,wBAAiBQ,MAAlC,EAA0C;AACxCT,IAAAA,GAAG,SAAO,iCAAqBZ,OAAO,CAACmB,IAAR,CAAaH,IAAlC,CAAP,OAAH;AACD;;AAED,MAAIM,MAAM,GAAGrC,MAAM,CAAC8B,KAAP,CAAaO,MAA1B;;AAEA,MAAIb,MAAM,KAAK,GAAf,EAAoB;AAClB,QAAIa,MAAJ,EAAY;AACV,UAAIC,KAAK,CAACC,OAAN,CAAcF,MAAd,CAAJ,EAA2B;AACzBA,QAAAA,MAAM,aAAOA,MAAP,CAAN;AACA,YAAMG,GAAG,GAAGH,MAAM,CAACI,SAAP,CAAiB,UAACC,CAAD;AAAA,iBAAYA,CAAC,CAACC,QAAF,CAAW,UAAX,CAAZ;AAAA,SAAjB,CAAZ;AACAN,QAAAA,MAAM,CAACG,GAAD,CAAN,sBAA8BzB,OAAO,CAAC6B,GAAtC;AACD,OAJD,MAIO;AACL,YAAIP,MAAM,CAACM,QAAP,CAAgB,UAAhB,CAAJ,EAAiC;AAC/BN,UAAAA,MAAM,sBAAmBtB,OAAO,CAAC6B,GAA3B,OAAN;AACD,SAFD,MAEO;AACLP,UAAAA,MAAM,GAAG,CAACA,MAAD,qBAAyBtB,OAAO,CAAC6B,GAAjC,QAAT;AACD;AACF;AACF,KAZD,MAYO;AACLP,MAAAA,MAAM,sBAAmBtB,OAAO,CAAC6B,GAA3B,OAAN;AACD;AACF;;AAED,MAAIP,MAAJ,EAAY;AACV,QAAIC,KAAK,CAACC,OAAN,CAAcF,MAAd,CAAJ,EAA2B;AACzBV,MAAAA,GAAG,IAAI,aAAaU,MAAM,CAACQ,IAAP,CAAY,UAAZ,CAApB;AACD,KAFD,MAEO;AACLlB,MAAAA,GAAG,IAAI,aAAaU,MAApB;AACD;AACF;;AAED,SAAOV,GAAP;AACD;;AAED,SAASnB,kBAAT,CAA4BR,MAA5B,EAAgD;AAAA;;AAC9C,MAAMwB,MAAM,GAAGC,oBAAa,gCAAmBzB,MAAnB,CAAb,CAAf;;AACA,MAAI2B,GAAG,SAAO3B,MAAM,CAAC8B,KAAP,CAAaC,IAApB,SAA4BP,MAAnC;;AAEA,MAAIxB,MAAM,CAAC8B,KAAP,CAAaE,GAAjB,EAAsB;AACpBL,IAAAA,GAAG,SAAO3B,MAAM,CAAC8B,KAAP,CAAaC,IAApB,SAA4B/B,MAAM,CAAC8B,KAAP,CAAaE,GAAzC,SAAgDR,MAAnD;AACD;;AAED,uBAAIxB,MAAM,CAAC8B,KAAX,aAAI,cAAcO,MAAlB,EAA0B;AACxBV,IAAAA,GAAG,IAAI,aAAa,4BAAe3B,MAAf,CAApB;AACD;;AACD,SAAO2B,GAAP;AACD;;AAED,SAASX,UAAT,CACED,OADF,EAGEf,MAHF,EAIQ;AACN,SAAO;AACL8C,IAAAA,QAAQ,EAAE/B,OAAO,CAACmB,IAAR,CAAaY,QADlB;AAELF,IAAAA,GAAG,EAAE7B,OAAO,CAAC6B,GAFR;AAGL7C,IAAAA,QAAQ,EAAE,EAHL;AAILgD,IAAAA,IAAI,EAAE,iCAAqBhC,OAAO,CAACmB,IAAR,CAAaa,IAAlC,CAJD;AAKLC,IAAAA,GAAG,EAAEzB,WAAW,CAACR,OAAD,EAAUf,MAAV;AALX,GAAP;AAOD;;AAED,SAASkB,eAAT,CAAyB+B,UAAzB,EAAqD;AACnD,MAAMnC,GAAG,GAAG,EAAZ;AACA,MAAIoC,IAAJ;AACA,MAAMC,KAAK,GAAG,EAAd;AACA,MAAIC,CAAJ;;AAEA,OAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAGH,UAAH,oBAAGA,UAAU,CAAEI,MAAf,CAAb,EAAoCD,CAAC,IAAI,CAAzC,EAA4C;AAC1CtC,IAAAA,GAAG,CAACmC,UAAU,CAACG,CAAD,CAAV,CAAcR,GAAf,CAAH,GAAyBQ,CAAzB;AACAH,IAAAA,UAAU,CAACG,CAAD,CAAV,CAAcrD,QAAd,GAAyB,EAAzB;AACD;;AAED,OAAKqD,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAGH,UAAH,oBAAGA,UAAU,CAAEI,MAAf,CAAb,EAAoCD,CAAC,IAAI,CAAzC,EAA4C;AAC1CF,IAAAA,IAAI,GAAGD,UAAU,CAACG,CAAD,CAAjB,CAD0C,CAE1C;AACA;AACA;;AACA,QAAIF,IAAI,CAACJ,QAAL,IAAiBhC,GAAG,CAACwC,cAAJ,CAAmBJ,IAAI,CAACJ,QAAxB,CAArB,EAAwD;AACtD,UAAII,IAAI,CAACN,GAAL,KAAaM,IAAI,CAACJ,QAAtB,EAAgC;AAAA;;AAC9B,YAAMS,YAAY,GAAGN,UAAU,CAACnC,GAAG,UAACoC,IAAD,qBAAC,MAAMJ,QAAP,CAAJ,CAA/B;AACAS,QAAAA,YAAY,QAAZ,qCAAAA,YAAY,CAAExD,QAAd,2CAAwByD,IAAxB,CAA6BN,IAA7B;AACD;AACF,KALD,MAKO;AACLC,MAAAA,KAAK,CAACK,IAAN,CAAWN,IAAX;AACD;AACF;;AAED,SAAOC,KAAP;AACD","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 +1 @@
1
- {"version":3,"sources":["../../../../src/listing/hooks/useListingFilters.tsx"],"names":["ListingFiltersStateContext","React","createContext","undefined","ListingFiltersProvider","children","aggregates","pageType","type","AggregateRequestEnum","Filters","aggData","data","isLoading","isFetching","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","ListingTypesEnum","Search","cat","typeToSuffix","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 { RangeAggregation, StatAggregation, TermAggregation } from '@sentecacommerce/sdk'\nimport { getSelectedFilters } from '../../utils'\nexport { RangeAggregation, StatAggregation, TermAggregation } 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 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":["ListingFiltersStateContext","React","createContext","undefined","ListingFiltersProvider","children","aggregates","pageType","type","AggregateRequestEnum","Filters","aggData","data","isLoading","isFetching","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","ListingTypesEnum","Search","cat","typeToSuffix","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 +1 @@
1
- {"version":3,"sources":["../../../../src/listing/hooks/useListingSEOCategories.tsx"],"names":["slugTypeToUrl","category","collection","brand","useListingSEOCategories","seoAggregates","AggregateRequestEnum","Categories","aggData","data","isLoading","isIdle","isFetching","router","filterDefinition","React","useMemo","type","term","response","name","label","component","items","map","current","buildFilter","filter","meta","url","slug","query","cat"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAMA;;AACA;;AAEA;;AAEA,IAAMA,aAAa,GAAG;AACpBC,EAAAA,QAAQ,EAAE,IADU;AAEpBC,EAAAA,UAAU,EAAE,KAFQ;AAGpBC,EAAAA,KAAK,EAAE;AAHa,CAAtB;;AAsBO,IAAMC,uBAAuB,GAAG,SAA1BA,uBAA0B,GAA0C;AAAA,0BACrD,0CADqD;AAAA,MACvEC,aADuE,qBACvEA,aADuE;;AAAA,2BAEtB,4BACvD,CAACA,aAAD,CADuD,EAEvDC,0BAAqBC,UAFkC,CAFsB;AAAA,MAEjEC,OAFiE,sBAEvEC,IAFuE;AAAA,MAExDC,SAFwD,sBAExDA,SAFwD;AAAA,MAE7CC,MAF6C,sBAE7CA,MAF6C;AAAA,MAErCC,UAFqC,sBAErCA,UAFqC;;AAM/E,MAAMC,MAAM,GAAG,wBAAf;AACA,MAAMC,gBAAgB,GAAGT,aAAH,oBAAGA,aAAa,CAAES,gBAAxC;;AAEA,MAAML,IAAwB,GAAGM,kBAAMC,OAAN,CAAc,YAAM;AACnD,QAAIN,SAAS,IAAI,CAACF,OAAlB,EAA2B;AACzB,aAAO,IAAP;AACD;;AAHkD,gCAK5B,qCAAwBH,aAAxB,CAL4B;AAAA,QAK3CY,IAL2C,yBAK3CA,IAL2C;AAAA,QAKrCC,IALqC,yBAKrCA,IALqC;;AAOnD,QAAMC,QAAQ,GAAG,uCAA0BX,OAA1B,EAAmCS,IAAnC,EAAyCC,IAAzC,CAAjB;AAEA,WAAO,CACL;AACEE,MAAAA,IAAI,EAAEf,aAAF,oBAAEA,aAAa,CAAEgB,KADvB;AAEEC,MAAAA,SAAS,EAAEjB,aAAF,oBAAEA,aAAa,CAAEiB,SAF5B;AAGEC,MAAAA,KAAK,EAAEJ,QAAF,oBAAEA,QAAQ,CAAEK,GAAV,CAAc,UAACC,OAAD;AAAA,eACnBC,WAAW,CAACD,OAAD,EAAUX,gBAAV,EAA4BD,MAA5B,CADQ;AAAA,OAAd;AAHT,KADK,CAAP;AASD,GAlBgC,EAkB9B,CAACD,UAAD,EAAaC,MAAb,CAlB8B,CAAjC;;AAoBA,SAAO;AAAEJ,IAAAA,IAAI,EAAJA,IAAF;AAAQC,IAAAA,SAAS,EAATA,SAAR;AAAmBE,IAAAA,UAAU,EAAVA,UAAnB;AAA+BD,IAAAA,MAAM,EAANA;AAA/B,GAAP;AACD,CA9BM;;;;AAgCP,SAASe,WAAT,CACED,OADF,EAEEE,MAFF,EAGEd,MAHF,EAIE;AACA,MAAMO,IAAI,GAAG,iCAAqBK,OAAO,CAACG,IAAR,CAAaR,IAAlC,CAAb;AACA,MAAIS,GAAG,SAAO,iCAAqBJ,OAAO,CAACG,IAAR,CAAaE,IAAlC,CAAP,GACL9B,aAAa,CAAC2B,MAAD,CADf;;AAGA,MAAId,MAAM,CAACkB,KAAP,CAAaC,GAAjB,EAAsB;AACpBH,IAAAA,GAAG,SAAOhB,MAAM,CAACkB,KAAP,CAAaD,IAApB,SAA4B,iCAAqBL,OAAO,CAACG,IAAR,CAAaE,IAAlC,CAA5B,GACD9B,aAAa,CAAC2B,MAAD,CADf;AAGD;;AACD,SAAO;AACLP,IAAAA,IAAI,EAAJA,IADK;AAELS,IAAAA,GAAG,EAAHA;AAFK,GAAP;AAID","sourcesContent":["import React from 'react'\nimport { NextRouter, useRouter } from 'next/router'\nimport {\n useAggregateQuery,\n AggregateRequestEnum,\n AggregationResultType,\n} from '../api'\nimport { Aggregate } from '../types'\nimport { useListingConfig } from './useListingConfig'\nimport { getTranslatableField } from '../../utils'\n\nimport { processCategoriesResponse, getAggregateTypeAndTerm } from './utils'\n\nconst slugTypeToUrl = {\n category: '/c',\n collection: '/ct',\n brand: '/b',\n}\n\nexport type SeoFilter = {\n name?: string\n component?: string\n items?: {\n name: string\n url: string\n }[]\n}\n\nexport type UseListingSEOCategoriesPropsResult = {\n data: SeoFilter[] | null\n isLoading: boolean\n isFetching: boolean\n isIdle: boolean\n}\n\nexport const useListingSEOCategories = (): UseListingSEOCategoriesPropsResult => {\n const { seoAggregates } = useListingConfig()\n const { data: aggData, isLoading, isIdle, isFetching } = useAggregateQuery(\n [seoAggregates as Aggregate],\n AggregateRequestEnum.Categories\n )\n const router = useRouter()\n const filterDefinition = seoAggregates?.filterDefinition as string\n\n const data: SeoFilter[] | null = React.useMemo(() => {\n if (isLoading && !aggData) {\n return null\n }\n\n const { type, term } = getAggregateTypeAndTerm(seoAggregates)\n\n const response = processCategoriesResponse(aggData, type, term)\n\n return [\n {\n name: seoAggregates?.label,\n component: seoAggregates?.component,\n items: response?.map((current) =>\n buildFilter(current, filterDefinition, router)\n ),\n },\n ]\n }, [isFetching, router])\n\n return { data, isLoading, isFetching, isIdle }\n}\n\nfunction buildFilter(\n current: AggregationResultType,\n filter: string,\n router: NextRouter\n) {\n const name = getTranslatableField(current.meta.name)\n let url = `/${getTranslatableField(current.meta.slug)}${\n slugTypeToUrl[filter]\n }`\n if (router.query.cat) {\n url = `/${router.query.slug}/${getTranslatableField(current.meta.slug)}${\n slugTypeToUrl[filter]\n }`\n }\n return {\n name,\n url,\n }\n}\n"],"file":"useListingSEOCategories.js"}
1
+ {"version":3,"sources":["../../../../src/listing/hooks/useListingSEOCategories.tsx"],"names":["slugTypeToUrl","category","collection","brand","useListingSEOCategories","seoAggregates","AggregateRequestEnum","Categories","aggData","data","isLoading","isIdle","isFetching","router","filterDefinition","React","useMemo","type","term","response","name","label","component","items","map","current","buildFilter","filter","meta","url","slug","query","cat"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAMA;;AACA;;AAEA;;AAEA,IAAMA,aAAa,GAAG;AACpBC,EAAAA,QAAQ,EAAE,IADU;AAEpBC,EAAAA,UAAU,EAAE,KAFQ;AAGpBC,EAAAA,KAAK,EAAE;AAHa,CAAtB;;AAsBO,IAAMC,uBAAuB,GAAG,SAA1BA,uBAA0B,GAA0C;AAAA,0BACrD,0CADqD;AAAA,MACvEC,aADuE,qBACvEA,aADuE;;AAAA,2BAGtB,4BACvD,CAACA,aAAD,CADuD,EAEvDC,0BAAqBC,UAFkC,CAHsB;AAAA,MAGjEC,OAHiE,sBAGvEC,IAHuE;AAAA,MAGxDC,SAHwD,sBAGxDA,SAHwD;AAAA,MAG7CC,MAH6C,sBAG7CA,MAH6C;AAAA,MAGrCC,UAHqC,sBAGrCA,UAHqC;;AAO/E,MAAMC,MAAM,GAAG,wBAAf;AACA,MAAMC,gBAAgB,GAAGT,aAAH,oBAAGA,aAAa,CAAES,gBAAxC;;AAEA,MAAML,IAAwB,GAAGM,kBAAMC,OAAN,CAAc,YAAM;AACnD,QAAIN,SAAS,IAAI,CAACF,OAAlB,EAA2B;AACzB,aAAO,IAAP;AACD;;AAHkD,gCAK5B,qCAAwBH,aAAxB,CAL4B;AAAA,QAK3CY,IAL2C,yBAK3CA,IAL2C;AAAA,QAKrCC,IALqC,yBAKrCA,IALqC;;AAOnD,QAAMC,QAAQ,GAAG,uCAA0BX,OAA1B,EAAmCS,IAAnC,EAAyCC,IAAzC,CAAjB;AAEA,WAAO,CACL;AACEE,MAAAA,IAAI,EAAEf,aAAF,oBAAEA,aAAa,CAAEgB,KADvB;AAEEC,MAAAA,SAAS,EAAEjB,aAAF,oBAAEA,aAAa,CAAEiB,SAF5B;AAGEC,MAAAA,KAAK,EAAEJ,QAAF,oBAAEA,QAAQ,CAAEK,GAAV,CAAc,UAACC,OAAD;AAAA,eACnBC,WAAW,CAACD,OAAD,EAAUX,gBAAV,EAA4BD,MAA5B,CADQ;AAAA,OAAd;AAHT,KADK,CAAP;AASD,GAlBgC,EAkB9B,CAACD,UAAD,EAAaC,MAAb,CAlB8B,CAAjC;;AAoBA,SAAO;AAAEJ,IAAAA,IAAI,EAAJA,IAAF;AAAQC,IAAAA,SAAS,EAATA,SAAR;AAAmBE,IAAAA,UAAU,EAAVA,UAAnB;AAA+BD,IAAAA,MAAM,EAANA;AAA/B,GAAP;AACD,CA/BM;;;;AAiCP,SAASe,WAAT,CACED,OADF,EAEEE,MAFF,EAGEd,MAHF,EAIE;AACA,MAAMO,IAAI,GAAG,iCAAqBK,OAAO,CAACG,IAAR,CAAaR,IAAlC,CAAb;AACA,MAAIS,GAAG,SAAO,iCAAqBJ,OAAO,CAACG,IAAR,CAAaE,IAAlC,CAAP,GACL9B,aAAa,CAAC2B,MAAD,CADf;;AAGA,MAAId,MAAM,CAACkB,KAAP,CAAaC,GAAjB,EAAsB;AACpBH,IAAAA,GAAG,SAAOhB,MAAM,CAACkB,KAAP,CAAaD,IAApB,SAA4B,iCAAqBL,OAAO,CAACG,IAAR,CAAaE,IAAlC,CAA5B,GACD9B,aAAa,CAAC2B,MAAD,CADf;AAGD;;AACD,SAAO;AACLP,IAAAA,IAAI,EAAJA,IADK;AAELS,IAAAA,GAAG,EAAHA;AAFK,GAAP;AAID","sourcesContent":["import React from 'react'\nimport { NextRouter, useRouter } from 'next/router'\nimport {\n useAggregateQuery,\n AggregateRequestEnum,\n AggregationResultType,\n} from '../api'\nimport { Aggregate } from '../types'\nimport { useListingConfig } from './useListingConfig'\nimport { getTranslatableField } from '../../utils'\n\nimport { processCategoriesResponse, getAggregateTypeAndTerm } from './utils'\n\nconst slugTypeToUrl = {\n category: '/c',\n collection: '/ct',\n brand: '/b',\n}\n\nexport type SeoFilter = {\n name?: string\n component?: string\n items?: {\n name: string\n url: string\n }[]\n}\n\nexport type UseListingSEOCategoriesPropsResult = {\n data: SeoFilter[] | null\n isLoading: boolean\n isFetching: boolean\n isIdle: boolean\n}\n\nexport const useListingSEOCategories = (): UseListingSEOCategoriesPropsResult => {\n const { seoAggregates } = useListingConfig()\n\n const { data: aggData, isLoading, isIdle, isFetching } = useAggregateQuery(\n [seoAggregates as Aggregate],\n AggregateRequestEnum.Categories\n )\n const router = useRouter()\n const filterDefinition = seoAggregates?.filterDefinition as string\n\n const data: SeoFilter[] | null = React.useMemo(() => {\n if (isLoading && !aggData) {\n return null\n }\n\n const { type, term } = getAggregateTypeAndTerm(seoAggregates)\n\n const response = processCategoriesResponse(aggData, type, term)\n\n return [\n {\n name: seoAggregates?.label,\n component: seoAggregates?.component,\n items: response?.map((current) =>\n buildFilter(current, filterDefinition, router)\n ),\n },\n ]\n }, [isFetching, router])\n\n return { data, isLoading, isFetching, isIdle }\n}\n\nfunction buildFilter(\n current: AggregationResultType,\n filter: string,\n router: NextRouter\n) {\n const name = getTranslatableField(current.meta.name)\n let url = `/${getTranslatableField(current.meta.slug)}${\n slugTypeToUrl[filter]\n }`\n if (router.query.cat) {\n url = `/${router.query.slug}/${getTranslatableField(current.meta.slug)}${\n slugTypeToUrl[filter]\n }`\n }\n return {\n name,\n url,\n }\n}\n"],"file":"useListingSEOCategories.js"}
@@ -7,11 +7,13 @@ function enablePreview(router, ctx) {
7
7
  var _router$query;
8
8
 
9
9
  if (((_router$query = router.query) == null ? void 0 : _router$query.staged) === 'true') {
10
- var path = "/preview?pageName=" + router.pathname + "&params=";
10
+ var params = new URLSearchParams(router.query).toString();
11
+ var path = ("/preview?pageName=" + router.pathname + "&params=" + (params ? "&" + params : '')).replace('staged=true', 'staged=false');
11
12
  ctx.res.writeHead(302, {
12
13
  Location: path
13
14
  });
14
15
  ctx.res.end();
16
+ return true;
15
17
  }
16
18
  }
17
19
  //# sourceMappingURL=enablePreview.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/ssr/enablePreview.ts"],"names":["enablePreview","router","ctx","query","staged","path","pathname","res","writeHead","Location","end"],"mappings":";;;;;AAEO,SAASA,aAAT,CAAuBC,MAAvB,EAA2CC,GAA3C,EAAqD;AAAA;;AAC1D,MAAI,kBAAAD,MAAM,CAACE,KAAP,mCAAcC,MAAd,MAAyB,MAA7B,EAAqC;AACnC,QAAMC,IAAI,0BAAwBJ,MAAM,CAACK,QAA/B,aAAV;AAEAJ,IAAAA,GAAG,CAACK,GAAJ,CAAQC,SAAR,CAAkB,GAAlB,EAAuB;AAAEC,MAAAA,QAAQ,EAAEJ;AAAZ,KAAvB;AACAH,IAAAA,GAAG,CAACK,GAAJ,CAAQG,GAAR;AACD;AACF","sourcesContent":["import { NextRouter } from 'next/router'\n\nexport function enablePreview(router: NextRouter, ctx: any) {\n if (router.query?.staged === 'true') {\n const path = `/preview?pageName=${router.pathname}&params=`\n\n ctx.res.writeHead(302, { Location: path })\n ctx.res.end()\n }\n}\n"],"file":"enablePreview.js"}
1
+ {"version":3,"sources":["../../../src/ssr/enablePreview.ts"],"names":["enablePreview","router","ctx","query","staged","params","URLSearchParams","toString","path","pathname","replace","res","writeHead","Location","end"],"mappings":";;;;;AAEO,SAASA,aAAT,CAAuBC,MAAvB,EAA2CC,GAA3C,EAAqD;AAAA;;AAC1D,MAAI,kBAAAD,MAAM,CAACE,KAAP,mCAAcC,MAAd,MAAyB,MAA7B,EAAqC;AACnC,QAAMC,MAAM,GAAI,IAAIC,eAAJ,CAAoBL,MAAM,CAACE,KAA3B,CAAD,CAA2CI,QAA3C,EAAf;AAEA,QAAMC,IAAI,GAAG,wBAAqBP,MAAM,CAACQ,QAA5B,iBACXJ,MAAM,SAAOA,MAAP,GAAkB,EADb,GAEVK,OAFU,CAEF,aAFE,EAEa,cAFb,CAAb;AAIAR,IAAAA,GAAG,CAACS,GAAJ,CAAQC,SAAR,CAAkB,GAAlB,EAAuB;AAAEC,MAAAA,QAAQ,EAAEL;AAAZ,KAAvB;AACAN,IAAAA,GAAG,CAACS,GAAJ,CAAQG,GAAR;AAEA,WAAO,IAAP;AACD;AACF","sourcesContent":["import { NextRouter } from 'next/router'\n\nexport function enablePreview(router: NextRouter, ctx: any) {\n if (router.query?.staged === 'true') {\n const params = (new URLSearchParams(router.query as any)).toString()\n\n const path = `/preview?pageName=${router.pathname}&params=${\n params ? `&${params}` : ''\n }`.replace('staged=true', 'staged=false')\n\n ctx.res.writeHead(302, { Location: path })\n ctx.res.end()\n\n return true\n }\n}\n"],"file":"enablePreview.js"}
@@ -28,6 +28,8 @@ export var useAggregateQuery = (aggregates, request) => {
28
28
  var predicateId = predicate == null ? void 0 : predicate._id;
29
29
  var queryKeys = [request.toString(), aggregateKeys, slug, postFilter];
30
30
  return useQuery(queryKeys, /*#__PURE__*/_asyncToGenerator(function* () {
31
+ // prevents an error in the case where a value of undefined is passed before hydration
32
+ if (!aggregates[0]) return;
31
33
  var query = prepareAggregateQuery({
32
34
  request,
33
35
  aggregates,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/listing/api/queries/useAggregateQuery.ts"],"names":["useQuery","CatalogAggregate","useRouter","usePredicate","useListingConfig","useListingSlug","ListingTypesEnum","extendFilter","getListingPageType","getAttributePageType","canUseDOM","AggregateRequestEnum","useAggregateQuery","aggregates","request","router","slug","data","predicate","config","postFilter","getPostFilters","aggregateKeys","generateAggregateKey","predicateId","_id","queryKeys","toString","query","prepareAggregateQuery","filterExtension","response","refetchOnMount","refetchOnWindowFocus","enabled","isQueryEnabled","keepPreviousData","staleTime","pageType","Categories","type","aggregationType","term","aggregationDefinition","aggValue","filter","Brand","applyBrandsPostFilter","cat","applyAttributePageFilter","Category","Filters","filters","queryType","Search","val","View","aggregatesMap","reduce","map","agg","aggregateType","aggregationTerm","aggregate","join","Array","isArray","hasCategory","includes","filtersArr","split","res","i"],"mappings":"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","sourcesContent":["import { useQuery } from 'react-query'\nimport {\n CatalogAggregate,\n RangeAggregationResult,\n TermAggregationResult,\n RangeAggregation,\n TermAggregation,\n StatAggregation,\n} from '@sentecacommerce/sdk'\nimport { NextRouter, useRouter } from 'next/router'\nimport { usePredicate, PredicateType } from './usePredicate'\nimport { useListingConfig, useListingSlug } from '../../hooks'\nimport { ListingTypesEnum } from '../../types'\nimport { extendFilter, getListingPageType } from '../../utils'\nimport { Aggregate } from '../../types'\nimport { getAttributePageType } from '../../hooks/utils'\nimport { canUseDOM } from '../../../utils'\n\nexport type AggregationResultType = RangeAggregationResult &\n TermAggregationResult &\n RangeAggregationResult\n\nexport type AggregateType = TermAggregation & StatAggregation & RangeAggregation\n\nexport enum AggregateRequestEnum {\n Filters = 'filters',\n Categories = 'categories',\n}\n\nexport const useAggregateQuery = (\n aggregates: Aggregate[],\n request: AggregateRequestEnum\n) => {\n const router = useRouter()\n const slug = useListingSlug()\n const { data: predicate } = usePredicate()\n const config = useListingConfig()\n const postFilter = getPostFilters(router)\n const aggregateKeys = generateAggregateKey(aggregates)\n const predicateId = predicate?._id\n\n const queryKeys = [request.toString(), aggregateKeys, slug, postFilter]\n\n return useQuery(\n queryKeys,\n async () => {\n const query = prepareAggregateQuery({\n request,\n aggregates,\n predicate,\n router,\n postFilter,\n slug,\n filterExtension: config.filterExtension,\n })\n\n const response = await CatalogAggregate(query)\n\n return response\n },\n {\n refetchOnMount: false,\n refetchOnWindowFocus: false,\n enabled: isQueryEnabled(router, predicateId),\n keepPreviousData: true,\n staleTime: 30000,\n }\n )\n}\n\nexport function prepareAggregateQuery({\n request,\n predicate,\n aggregates,\n router,\n postFilter,\n slug,\n filterExtension,\n}: {\n request: AggregateRequestEnum\n aggregates: Aggregate[]\n router: NextRouter\n postFilter: string | undefined\n predicate?: PredicateType\n filterExtension?: string\n slug: string\n}) {\n const pageType = getListingPageType(router)\n\n switch (request) {\n case AggregateRequestEnum.Categories: {\n const type = aggregates[0]?.aggregationType\n const term = aggregates?.[0].aggregationDefinition\n const aggValue =\n predicate?._id && term !== 'categories'\n ? `${term}:${predicate?._id}`\n : term\n\n return {\n [type]: aggValue,\n ...(filterExtension && {\n filter: filterExtension + `${postFilter ?? ''}`,\n }),\n ...(pageType === ListingTypesEnum.Brand && {\n filter: `brand;eq;\"${predicate?._id}\"${applyBrandsPostFilter({\n postFilter,\n })}`,\n }),\n ...(pageType === ListingTypesEnum.Brand &&\n router.query.cat && {\n filter:\n `brand;eq;\"${predicate?._id}\"` +\n `${applyBrandsPostFilter({\n postFilter,\n })}&` +\n applyAttributePageFilter(router),\n }),\n ...(pageType === ListingTypesEnum.Category &&\n (router.query.cat\n ? {\n filter:\n extendFilter(\n applyAttributePageFilter(router),\n filterExtension\n ) + `${postFilter ? '&' + postFilter : ''}`,\n }\n : {\n filter: `${postFilter ?? ''}`,\n })),\n // ...(router.query.cat && {\n // filter: extendFilter(\n // applyAttributePageFilter(router),\n // filterExtension\n // ),\n // }),\n // Using this to conditionally apply the postFilter\n // as it will fail if you do postFilter=undefined\n } as any\n }\n case AggregateRequestEnum.Filters: {\n const query = predicate?.filters || predicate?._id || slug\n\n const queryType = pageType === ListingTypesEnum.Search ? 'text' : pageType\n\n let filter = `${queryType};eq;\"${query}\"`\n if (router.query.cat) {\n const [type, val] = getAttributePageType(router)\n filter += `&attr.${type};eq;${val}`\n }\n if (pageType === ListingTypesEnum.View) {\n filter = query\n }\n\n const aggregatesMap = aggregates?.reduce((map, agg) => {\n const aggregateType = agg.aggregationType\n const aggregationTerm = agg.aggregationDefinition\n if (map[aggregateType]) {\n return {\n ...map,\n [aggregateType]: `${map[aggregateType]}&${aggregationTerm}`,\n }\n }\n\n return {\n ...map,\n [aggregateType]: `${aggregationTerm}`,\n }\n }, {})\n\n return {\n ...aggregatesMap,\n filter: extendFilter(filter, filterExtension),\n ...(router.query?.filter && { postFilter }),\n // Using this to conditionally apply the postFilter\n // as it will fail if you do postFilter=undefined\n } as any\n }\n }\n}\n\nexport function generateAggregateKey(aggregates?: Aggregate[]) {\n return aggregates\n ?.map((aggregate) => aggregate?.aggregationDefinition)\n ?.join('&')\n}\n\nfunction getPostFilters(router: NextRouter) {\n const { query } = router\n return query && Array.isArray(query.filter)\n ? query?.filter?.join('&')\n : (query?.filter as string)\n}\n\nfunction isQueryEnabled(router: NextRouter, predicate?: string) {\n const pageType = getListingPageType(router)\n\n if (pageType === ListingTypesEnum.Search) {\n return canUseDOM()\n }\n\n return !!predicate && canUseDOM()\n}\n\nfunction applyAttributePageFilter(router: NextRouter) {\n const [type, val] = getAttributePageType(router)\n return `attr.${type};eq;${val}`\n}\n\nconst applyBrandsPostFilter = ({ postFilter }: { postFilter?: string }) => {\n if (postFilter) {\n const hasCategory = postFilter.includes('category')\n const filtersArr = postFilter.split('&')\n\n const filters = filtersArr.reduce((res, val, i) => {\n if (val.includes('category')) return res\n\n if (i === 0 && hasCategory) {\n return (res += `${val}`)\n } else {\n return (res += `&${val}`)\n }\n }, '')\n\n return `${filters}`\n }\n\n return ''\n}\n"],"file":"useAggregateQuery.js"}
1
+ {"version":3,"sources":["../../../../../src/listing/api/queries/useAggregateQuery.ts"],"names":["useQuery","CatalogAggregate","useRouter","usePredicate","useListingConfig","useListingSlug","ListingTypesEnum","extendFilter","getListingPageType","getAttributePageType","canUseDOM","AggregateRequestEnum","useAggregateQuery","aggregates","request","router","slug","data","predicate","config","postFilter","getPostFilters","aggregateKeys","generateAggregateKey","predicateId","_id","queryKeys","toString","query","prepareAggregateQuery","filterExtension","response","refetchOnMount","refetchOnWindowFocus","enabled","isQueryEnabled","keepPreviousData","staleTime","pageType","Categories","type","aggregationType","term","aggregationDefinition","aggValue","filter","Brand","applyBrandsPostFilter","cat","applyAttributePageFilter","Category","Filters","filters","queryType","Search","val","View","aggregatesMap","reduce","map","agg","aggregateType","aggregationTerm","aggregate","join","Array","isArray","hasCategory","includes","filtersArr","split","res","i"],"mappings":"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","sourcesContent":["import { useQuery } from 'react-query'\nimport {\n CatalogAggregate,\n RangeAggregationResult,\n TermAggregationResult,\n RangeAggregation,\n TermAggregation,\n StatAggregation,\n} from '@sentecacommerce/sdk'\nimport { NextRouter, useRouter } from 'next/router'\nimport { usePredicate, PredicateType } from './usePredicate'\nimport { useListingConfig, useListingSlug } from '../../hooks'\nimport { ListingTypesEnum } from '../../types'\nimport { extendFilter, getListingPageType } from '../../utils'\nimport { Aggregate } from '../../types'\nimport { getAttributePageType } from '../../hooks/utils'\nimport { canUseDOM } from '../../../utils'\n\nexport type AggregationResultType = RangeAggregationResult &\n TermAggregationResult &\n RangeAggregationResult\n\nexport type AggregateType = TermAggregation & StatAggregation & RangeAggregation\n\nexport enum AggregateRequestEnum {\n Filters = 'filters',\n Categories = 'categories',\n}\n\nexport const useAggregateQuery = (\n aggregates: Aggregate[],\n request: AggregateRequestEnum\n) => {\n const router = useRouter()\n const slug = useListingSlug()\n const { data: predicate } = usePredicate()\n const config = useListingConfig()\n const postFilter = getPostFilters(router)\n const aggregateKeys = generateAggregateKey(aggregates)\n const predicateId = predicate?._id\n\n const queryKeys = [request.toString(), aggregateKeys, slug, postFilter]\n\n return useQuery(\n queryKeys,\n async () => {\n // prevents an error in the case where a value of undefined is passed before hydration\n if (!aggregates[0]) return\n\n const query = prepareAggregateQuery({\n request,\n aggregates,\n predicate,\n router,\n postFilter,\n slug,\n filterExtension: config.filterExtension,\n })\n\n const response = await CatalogAggregate(query)\n\n return response\n },\n {\n refetchOnMount: false,\n refetchOnWindowFocus: false,\n enabled: isQueryEnabled(router, predicateId),\n keepPreviousData: true,\n staleTime: 30000,\n }\n )\n}\n\nexport function prepareAggregateQuery({\n request,\n predicate,\n aggregates,\n router,\n postFilter,\n slug,\n filterExtension,\n}: {\n request: AggregateRequestEnum\n aggregates: Aggregate[]\n router: NextRouter\n postFilter: string | undefined\n predicate?: PredicateType\n filterExtension?: string\n slug: string\n}) {\n const pageType = getListingPageType(router)\n\n switch (request) {\n case AggregateRequestEnum.Categories: {\n const type = aggregates[0]?.aggregationType\n const term = aggregates?.[0].aggregationDefinition\n const aggValue =\n predicate?._id && term !== 'categories'\n ? `${term}:${predicate?._id}`\n : term\n\n return {\n [type]: aggValue,\n ...(filterExtension && {\n filter: filterExtension + `${postFilter ?? ''}`,\n }),\n ...(pageType === ListingTypesEnum.Brand && {\n filter: `brand;eq;\"${predicate?._id}\"${applyBrandsPostFilter({\n postFilter,\n })}`,\n }),\n ...(pageType === ListingTypesEnum.Brand &&\n router.query.cat && {\n filter:\n `brand;eq;\"${predicate?._id}\"` +\n `${applyBrandsPostFilter({\n postFilter,\n })}&` +\n applyAttributePageFilter(router),\n }),\n ...(pageType === ListingTypesEnum.Category &&\n (router.query.cat\n ? {\n filter:\n extendFilter(\n applyAttributePageFilter(router),\n filterExtension\n ) + `${postFilter ? '&' + postFilter : ''}`,\n }\n : {\n filter: `${postFilter ?? ''}`,\n })),\n // ...(router.query.cat && {\n // filter: extendFilter(\n // applyAttributePageFilter(router),\n // filterExtension\n // ),\n // }),\n // Using this to conditionally apply the postFilter\n // as it will fail if you do postFilter=undefined\n } as any\n }\n case AggregateRequestEnum.Filters: {\n const query = predicate?.filters || predicate?._id || slug\n\n const queryType = pageType === ListingTypesEnum.Search ? 'text' : pageType\n\n let filter = `${queryType};eq;\"${query}\"`\n if (router.query.cat) {\n const [type, val] = getAttributePageType(router)\n filter += `&attr.${type};eq;${val}`\n }\n if (pageType === ListingTypesEnum.View) {\n filter = query\n }\n\n const aggregatesMap = aggregates?.reduce((map, agg) => {\n const aggregateType = agg.aggregationType\n const aggregationTerm = agg.aggregationDefinition\n if (map[aggregateType]) {\n return {\n ...map,\n [aggregateType]: `${map[aggregateType]}&${aggregationTerm}`,\n }\n }\n\n return {\n ...map,\n [aggregateType]: `${aggregationTerm}`,\n }\n }, {})\n\n return {\n ...aggregatesMap,\n filter: extendFilter(filter, filterExtension),\n ...(router.query?.filter && { postFilter }),\n // Using this to conditionally apply the postFilter\n // as it will fail if you do postFilter=undefined\n } as any\n }\n }\n}\n\nexport function generateAggregateKey(aggregates?: Aggregate[]) {\n return aggregates\n ?.map((aggregate) => aggregate?.aggregationDefinition)\n ?.join('&')\n}\n\nfunction getPostFilters(router: NextRouter) {\n const { query } = router\n return query && Array.isArray(query.filter)\n ? query?.filter?.join('&')\n : (query?.filter as string)\n}\n\nfunction isQueryEnabled(router: NextRouter, predicate?: string) {\n const pageType = getListingPageType(router)\n\n if (pageType === ListingTypesEnum.Search) {\n return canUseDOM()\n }\n\n return !!predicate && canUseDOM()\n}\n\nfunction applyAttributePageFilter(router: NextRouter) {\n const [type, val] = getAttributePageType(router)\n return `attr.${type};eq;${val}`\n}\n\nconst applyBrandsPostFilter = ({ postFilter }: { postFilter?: string }) => {\n if (postFilter) {\n const hasCategory = postFilter.includes('category')\n const filtersArr = postFilter.split('&')\n\n const filters = filtersArr.reduce((res, val, i) => {\n if (val.includes('category')) return res\n\n if (i === 0 && hasCategory) {\n return (res += `${val}`)\n } else {\n return (res += `&${val}`)\n }\n }, '')\n\n return `${filters}`\n }\n\n return ''\n}\n"],"file":"useAggregateQuery.js"}
@@ -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 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","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 +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 { RangeAggregation, StatAggregation, TermAggregation } from '@sentecacommerce/sdk'\nimport { getSelectedFilters } from '../../utils'\nexport { RangeAggregation, StatAggregation, TermAggregation } 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 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","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 +1 @@
1
- {"version":3,"sources":["../../../../src/listing/hooks/useListingSEOCategories.tsx"],"names":["React","useRouter","useAggregateQuery","AggregateRequestEnum","useListingConfig","getTranslatableField","processCategoriesResponse","getAggregateTypeAndTerm","slugTypeToUrl","category","collection","brand","useListingSEOCategories","seoAggregates","data","aggData","isLoading","isIdle","isFetching","Categories","router","filterDefinition","useMemo","type","term","response","name","label","component","items","map","current","buildFilter","filter","meta","url","slug","query","cat"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAAqBC,SAArB,QAAsC,aAAtC;AACA,SACEC,iBADF,EAEEC,oBAFF,QAIO,QAJP;AAMA,SAASC,gBAAT,QAAiC,oBAAjC;AACA,SAASC,oBAAT,QAAqC,aAArC;AAEA,SAASC,yBAAT,EAAoCC,uBAApC,QAAmE,SAAnE;AAEA,IAAMC,aAAa,GAAG;AACpBC,EAAAA,QAAQ,EAAE,IADU;AAEpBC,EAAAA,UAAU,EAAE,KAFQ;AAGpBC,EAAAA,KAAK,EAAE;AAHa,CAAtB;AAsBA,OAAO,IAAMC,uBAAuB,GAAG,MAA0C;AAC/E,MAAM;AAAEC,IAAAA;AAAF,MAAoBT,gBAAgB,EAA1C;AACA,MAAM;AAAEU,IAAAA,IAAI,EAAEC,OAAR;AAAiBC,IAAAA,SAAjB;AAA4BC,IAAAA,MAA5B;AAAoCC,IAAAA;AAApC,MAAmDhB,iBAAiB,CACxE,CAACW,aAAD,CADwE,EAExEV,oBAAoB,CAACgB,UAFmD,CAA1E;AAIA,MAAMC,MAAM,GAAGnB,SAAS,EAAxB;AACA,MAAMoB,gBAAgB,GAAGR,aAAH,oBAAGA,aAAa,CAAEQ,gBAAxC;AAEA,MAAMP,IAAwB,GAAGd,KAAK,CAACsB,OAAN,CAAc,MAAM;AACnD,QAAIN,SAAS,IAAI,CAACD,OAAlB,EAA2B;AACzB,aAAO,IAAP;AACD;;AAED,QAAM;AAAEQ,MAAAA,IAAF;AAAQC,MAAAA;AAAR,QAAiBjB,uBAAuB,CAACM,aAAD,CAA9C;AAEA,QAAMY,QAAQ,GAAGnB,yBAAyB,CAACS,OAAD,EAAUQ,IAAV,EAAgBC,IAAhB,CAA1C;AAEA,WAAO,CACL;AACEE,MAAAA,IAAI,EAAEb,aAAF,oBAAEA,aAAa,CAAEc,KADvB;AAEEC,MAAAA,SAAS,EAAEf,aAAF,oBAAEA,aAAa,CAAEe,SAF5B;AAGEC,MAAAA,KAAK,EAAEJ,QAAF,oBAAEA,QAAQ,CAAEK,GAAV,CAAeC,OAAD,IACnBC,WAAW,CAACD,OAAD,EAAUV,gBAAV,EAA4BD,MAA5B,CADN;AAHT,KADK,CAAP;AASD,GAlBgC,EAkB9B,CAACF,UAAD,EAAaE,MAAb,CAlB8B,CAAjC;AAoBA,SAAO;AAAEN,IAAAA,IAAF;AAAQE,IAAAA,SAAR;AAAmBE,IAAAA,UAAnB;AAA+BD,IAAAA;AAA/B,GAAP;AACD,CA9BM;;AAgCP,SAASe,WAAT,CACED,OADF,EAEEE,MAFF,EAGEb,MAHF,EAIE;AACA,MAAMM,IAAI,GAAGrB,oBAAoB,CAAC0B,OAAO,CAACG,IAAR,CAAaR,IAAd,CAAjC;AACA,MAAIS,GAAG,SAAO9B,oBAAoB,CAAC0B,OAAO,CAACG,IAAR,CAAaE,IAAd,CAA3B,GACL5B,aAAa,CAACyB,MAAD,CADf;;AAGA,MAAIb,MAAM,CAACiB,KAAP,CAAaC,GAAjB,EAAsB;AACpBH,IAAAA,GAAG,SAAOf,MAAM,CAACiB,KAAP,CAAaD,IAApB,SAA4B/B,oBAAoB,CAAC0B,OAAO,CAACG,IAAR,CAAaE,IAAd,CAAhD,GACD5B,aAAa,CAACyB,MAAD,CADf;AAGD;;AACD,SAAO;AACLP,IAAAA,IADK;AAELS,IAAAA;AAFK,GAAP;AAID","sourcesContent":["import React from 'react'\nimport { NextRouter, useRouter } from 'next/router'\nimport {\n useAggregateQuery,\n AggregateRequestEnum,\n AggregationResultType,\n} from '../api'\nimport { Aggregate } from '../types'\nimport { useListingConfig } from './useListingConfig'\nimport { getTranslatableField } from '../../utils'\n\nimport { processCategoriesResponse, getAggregateTypeAndTerm } from './utils'\n\nconst slugTypeToUrl = {\n category: '/c',\n collection: '/ct',\n brand: '/b',\n}\n\nexport type SeoFilter = {\n name?: string\n component?: string\n items?: {\n name: string\n url: string\n }[]\n}\n\nexport type UseListingSEOCategoriesPropsResult = {\n data: SeoFilter[] | null\n isLoading: boolean\n isFetching: boolean\n isIdle: boolean\n}\n\nexport const useListingSEOCategories = (): UseListingSEOCategoriesPropsResult => {\n const { seoAggregates } = useListingConfig()\n const { data: aggData, isLoading, isIdle, isFetching } = useAggregateQuery(\n [seoAggregates as Aggregate],\n AggregateRequestEnum.Categories\n )\n const router = useRouter()\n const filterDefinition = seoAggregates?.filterDefinition as string\n\n const data: SeoFilter[] | null = React.useMemo(() => {\n if (isLoading && !aggData) {\n return null\n }\n\n const { type, term } = getAggregateTypeAndTerm(seoAggregates)\n\n const response = processCategoriesResponse(aggData, type, term)\n\n return [\n {\n name: seoAggregates?.label,\n component: seoAggregates?.component,\n items: response?.map((current) =>\n buildFilter(current, filterDefinition, router)\n ),\n },\n ]\n }, [isFetching, router])\n\n return { data, isLoading, isFetching, isIdle }\n}\n\nfunction buildFilter(\n current: AggregationResultType,\n filter: string,\n router: NextRouter\n) {\n const name = getTranslatableField(current.meta.name)\n let url = `/${getTranslatableField(current.meta.slug)}${\n slugTypeToUrl[filter]\n }`\n if (router.query.cat) {\n url = `/${router.query.slug}/${getTranslatableField(current.meta.slug)}${\n slugTypeToUrl[filter]\n }`\n }\n return {\n name,\n url,\n }\n}\n"],"file":"useListingSEOCategories.js"}
1
+ {"version":3,"sources":["../../../../src/listing/hooks/useListingSEOCategories.tsx"],"names":["React","useRouter","useAggregateQuery","AggregateRequestEnum","useListingConfig","getTranslatableField","processCategoriesResponse","getAggregateTypeAndTerm","slugTypeToUrl","category","collection","brand","useListingSEOCategories","seoAggregates","data","aggData","isLoading","isIdle","isFetching","Categories","router","filterDefinition","useMemo","type","term","response","name","label","component","items","map","current","buildFilter","filter","meta","url","slug","query","cat"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAAqBC,SAArB,QAAsC,aAAtC;AACA,SACEC,iBADF,EAEEC,oBAFF,QAIO,QAJP;AAMA,SAASC,gBAAT,QAAiC,oBAAjC;AACA,SAASC,oBAAT,QAAqC,aAArC;AAEA,SAASC,yBAAT,EAAoCC,uBAApC,QAAmE,SAAnE;AAEA,IAAMC,aAAa,GAAG;AACpBC,EAAAA,QAAQ,EAAE,IADU;AAEpBC,EAAAA,UAAU,EAAE,KAFQ;AAGpBC,EAAAA,KAAK,EAAE;AAHa,CAAtB;AAsBA,OAAO,IAAMC,uBAAuB,GAAG,MAA0C;AAC/E,MAAM;AAAEC,IAAAA;AAAF,MAAoBT,gBAAgB,EAA1C;AAEA,MAAM;AAAEU,IAAAA,IAAI,EAAEC,OAAR;AAAiBC,IAAAA,SAAjB;AAA4BC,IAAAA,MAA5B;AAAoCC,IAAAA;AAApC,MAAmDhB,iBAAiB,CACxE,CAACW,aAAD,CADwE,EAExEV,oBAAoB,CAACgB,UAFmD,CAA1E;AAIA,MAAMC,MAAM,GAAGnB,SAAS,EAAxB;AACA,MAAMoB,gBAAgB,GAAGR,aAAH,oBAAGA,aAAa,CAAEQ,gBAAxC;AAEA,MAAMP,IAAwB,GAAGd,KAAK,CAACsB,OAAN,CAAc,MAAM;AACnD,QAAIN,SAAS,IAAI,CAACD,OAAlB,EAA2B;AACzB,aAAO,IAAP;AACD;;AAED,QAAM;AAAEQ,MAAAA,IAAF;AAAQC,MAAAA;AAAR,QAAiBjB,uBAAuB,CAACM,aAAD,CAA9C;AAEA,QAAMY,QAAQ,GAAGnB,yBAAyB,CAACS,OAAD,EAAUQ,IAAV,EAAgBC,IAAhB,CAA1C;AAEA,WAAO,CACL;AACEE,MAAAA,IAAI,EAAEb,aAAF,oBAAEA,aAAa,CAAEc,KADvB;AAEEC,MAAAA,SAAS,EAAEf,aAAF,oBAAEA,aAAa,CAAEe,SAF5B;AAGEC,MAAAA,KAAK,EAAEJ,QAAF,oBAAEA,QAAQ,CAAEK,GAAV,CAAeC,OAAD,IACnBC,WAAW,CAACD,OAAD,EAAUV,gBAAV,EAA4BD,MAA5B,CADN;AAHT,KADK,CAAP;AASD,GAlBgC,EAkB9B,CAACF,UAAD,EAAaE,MAAb,CAlB8B,CAAjC;AAoBA,SAAO;AAAEN,IAAAA,IAAF;AAAQE,IAAAA,SAAR;AAAmBE,IAAAA,UAAnB;AAA+BD,IAAAA;AAA/B,GAAP;AACD,CA/BM;;AAiCP,SAASe,WAAT,CACED,OADF,EAEEE,MAFF,EAGEb,MAHF,EAIE;AACA,MAAMM,IAAI,GAAGrB,oBAAoB,CAAC0B,OAAO,CAACG,IAAR,CAAaR,IAAd,CAAjC;AACA,MAAIS,GAAG,SAAO9B,oBAAoB,CAAC0B,OAAO,CAACG,IAAR,CAAaE,IAAd,CAA3B,GACL5B,aAAa,CAACyB,MAAD,CADf;;AAGA,MAAIb,MAAM,CAACiB,KAAP,CAAaC,GAAjB,EAAsB;AACpBH,IAAAA,GAAG,SAAOf,MAAM,CAACiB,KAAP,CAAaD,IAApB,SAA4B/B,oBAAoB,CAAC0B,OAAO,CAACG,IAAR,CAAaE,IAAd,CAAhD,GACD5B,aAAa,CAACyB,MAAD,CADf;AAGD;;AACD,SAAO;AACLP,IAAAA,IADK;AAELS,IAAAA;AAFK,GAAP;AAID","sourcesContent":["import React from 'react'\nimport { NextRouter, useRouter } from 'next/router'\nimport {\n useAggregateQuery,\n AggregateRequestEnum,\n AggregationResultType,\n} from '../api'\nimport { Aggregate } from '../types'\nimport { useListingConfig } from './useListingConfig'\nimport { getTranslatableField } from '../../utils'\n\nimport { processCategoriesResponse, getAggregateTypeAndTerm } from './utils'\n\nconst slugTypeToUrl = {\n category: '/c',\n collection: '/ct',\n brand: '/b',\n}\n\nexport type SeoFilter = {\n name?: string\n component?: string\n items?: {\n name: string\n url: string\n }[]\n}\n\nexport type UseListingSEOCategoriesPropsResult = {\n data: SeoFilter[] | null\n isLoading: boolean\n isFetching: boolean\n isIdle: boolean\n}\n\nexport const useListingSEOCategories = (): UseListingSEOCategoriesPropsResult => {\n const { seoAggregates } = useListingConfig()\n\n const { data: aggData, isLoading, isIdle, isFetching } = useAggregateQuery(\n [seoAggregates as Aggregate],\n AggregateRequestEnum.Categories\n )\n const router = useRouter()\n const filterDefinition = seoAggregates?.filterDefinition as string\n\n const data: SeoFilter[] | null = React.useMemo(() => {\n if (isLoading && !aggData) {\n return null\n }\n\n const { type, term } = getAggregateTypeAndTerm(seoAggregates)\n\n const response = processCategoriesResponse(aggData, type, term)\n\n return [\n {\n name: seoAggregates?.label,\n component: seoAggregates?.component,\n items: response?.map((current) =>\n buildFilter(current, filterDefinition, router)\n ),\n },\n ]\n }, [isFetching, router])\n\n return { data, isLoading, isFetching, isIdle }\n}\n\nfunction buildFilter(\n current: AggregationResultType,\n filter: string,\n router: NextRouter\n) {\n const name = getTranslatableField(current.meta.name)\n let url = `/${getTranslatableField(current.meta.slug)}${\n slugTypeToUrl[filter]\n }`\n if (router.query.cat) {\n url = `/${router.query.slug}/${getTranslatableField(current.meta.slug)}${\n slugTypeToUrl[filter]\n }`\n }\n return {\n name,\n url,\n }\n}\n"],"file":"useListingSEOCategories.js"}
@@ -2,11 +2,13 @@ export function enablePreview(router, ctx) {
2
2
  var _router$query;
3
3
 
4
4
  if (((_router$query = router.query) == null ? void 0 : _router$query.staged) === 'true') {
5
- var path = "/preview?pageName=" + router.pathname + "&params=";
5
+ var params = new URLSearchParams(router.query).toString();
6
+ var path = ("/preview?pageName=" + router.pathname + "&params=" + (params ? "&" + params : '')).replace('staged=true', 'staged=false');
6
7
  ctx.res.writeHead(302, {
7
8
  Location: path
8
9
  });
9
10
  ctx.res.end();
11
+ return true;
10
12
  }
11
13
  }
12
14
  //# sourceMappingURL=enablePreview.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/ssr/enablePreview.ts"],"names":["enablePreview","router","ctx","query","staged","path","pathname","res","writeHead","Location","end"],"mappings":"AAEA,OAAO,SAASA,aAAT,CAAuBC,MAAvB,EAA2CC,GAA3C,EAAqD;AAAA;;AAC1D,MAAI,kBAAAD,MAAM,CAACE,KAAP,mCAAcC,MAAd,MAAyB,MAA7B,EAAqC;AACnC,QAAMC,IAAI,0BAAwBJ,MAAM,CAACK,QAA/B,aAAV;AAEAJ,IAAAA,GAAG,CAACK,GAAJ,CAAQC,SAAR,CAAkB,GAAlB,EAAuB;AAAEC,MAAAA,QAAQ,EAAEJ;AAAZ,KAAvB;AACAH,IAAAA,GAAG,CAACK,GAAJ,CAAQG,GAAR;AACD;AACF","sourcesContent":["import { NextRouter } from 'next/router'\n\nexport function enablePreview(router: NextRouter, ctx: any) {\n if (router.query?.staged === 'true') {\n const path = `/preview?pageName=${router.pathname}&params=`\n\n ctx.res.writeHead(302, { Location: path })\n ctx.res.end()\n }\n}\n"],"file":"enablePreview.js"}
1
+ {"version":3,"sources":["../../../src/ssr/enablePreview.ts"],"names":["enablePreview","router","ctx","query","staged","params","URLSearchParams","toString","path","pathname","replace","res","writeHead","Location","end"],"mappings":"AAEA,OAAO,SAASA,aAAT,CAAuBC,MAAvB,EAA2CC,GAA3C,EAAqD;AAAA;;AAC1D,MAAI,kBAAAD,MAAM,CAACE,KAAP,mCAAcC,MAAd,MAAyB,MAA7B,EAAqC;AACnC,QAAMC,MAAM,GAAI,IAAIC,eAAJ,CAAoBL,MAAM,CAACE,KAA3B,CAAD,CAA2CI,QAA3C,EAAf;AAEA,QAAMC,IAAI,GAAG,wBAAqBP,MAAM,CAACQ,QAA5B,iBACXJ,MAAM,SAAOA,MAAP,GAAkB,EADb,GAEVK,OAFU,CAEF,aAFE,EAEa,cAFb,CAAb;AAIAR,IAAAA,GAAG,CAACS,GAAJ,CAAQC,SAAR,CAAkB,GAAlB,EAAuB;AAAEC,MAAAA,QAAQ,EAAEL;AAAZ,KAAvB;AACAN,IAAAA,GAAG,CAACS,GAAJ,CAAQG,GAAR;AAEA,WAAO,IAAP;AACD;AACF","sourcesContent":["import { NextRouter } from 'next/router'\n\nexport function enablePreview(router: NextRouter, ctx: any) {\n if (router.query?.staged === 'true') {\n const params = (new URLSearchParams(router.query as any)).toString()\n\n const path = `/preview?pageName=${router.pathname}&params=${\n params ? `&${params}` : ''\n }`.replace('staged=true', 'staged=false')\n\n ctx.res.writeHead(302, { Location: path })\n ctx.res.end()\n\n return true\n }\n}\n"],"file":"enablePreview.js"}
@@ -8,7 +8,7 @@ export declare enum AggregateRequestEnum {
8
8
  Filters = "filters",
9
9
  Categories = "categories"
10
10
  }
11
- export declare const useAggregateQuery: (aggregates: Aggregate[], request: AggregateRequestEnum) => import("react-query").QueryResult<import("@sentecacommerce/sdk").CatalogAggregateResponseDTO, unknown>;
11
+ export declare const useAggregateQuery: (aggregates: Aggregate[], request: AggregateRequestEnum) => import("react-query").QueryResult<import("@sentecacommerce/sdk").CatalogAggregateResponseDTO | undefined, unknown>;
12
12
  export declare function prepareAggregateQuery({ request, predicate, aggregates, router, postFilter, slug, filterExtension, }: {
13
13
  request: AggregateRequestEnum;
14
14
  aggregates: Aggregate[];
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { AggregationResultType } from '../api';
3
3
  import { RangeAggregation, StatAggregation, TermAggregation } from '@sentecacommerce/sdk';
4
- export { RangeAggregation, StatAggregation, TermAggregation } from '@sentecacommerce/sdk';
4
+ export { RangeAggregation, StatAggregation, TermAggregation, } from '@sentecacommerce/sdk';
5
5
  export declare type ListingAggregationResultType = {
6
6
  selected: boolean;
7
7
  data: AggregationResultType;
@@ -1,2 +1,2 @@
1
1
  import { NextRouter } from 'next/router';
2
- export declare function enablePreview(router: NextRouter, ctx: any): void;
2
+ export declare function enablePreview(router: NextRouter, ctx: any): true | undefined;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sentecacommerce-theme/lib",
3
3
  "sideEffects": false,
4
- "version": "0.11.64",
4
+ "version": "0.11.68",
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": "5e4de0093ed7ed38a0d5c01828571e1110f4f1c6",
30
+ "gitHead": "bfe47c893b6f9d6fb21a9dd67e692982514e1ea8",
31
31
  "dependencies": {
32
- "@sentecacommerce-theme/base": "^0.11.64",
32
+ "@sentecacommerce-theme/base": "^0.11.68",
33
33
  "@sentecacommerce/sdk": "^2.0.89",
34
34
  "body-scroll-lock": "^3.1.5",
35
35
  "copy-to-clipboard": "^3.3.1",