@sentecacommerce-theme/lib 0.11.76 → 0.11.80
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/hooks/basket-hooks/useBasketLineItem/index.js +3 -2
- package/dist/cjs/hooks/basket-hooks/useBasketLineItem/index.js.map +1 -1
- package/dist/cjs/hooks/useCatalogResult/index.js +3 -3
- package/dist/cjs/hooks/useCatalogResult/index.js.map +1 -1
- package/dist/cjs/hooks/useLineItem/index.js +3 -2
- package/dist/cjs/hooks/useLineItem/index.js.map +1 -1
- package/dist/cjs/listing/api/queries/useAggregateQuery.js +10 -2
- package/dist/cjs/listing/api/queries/useAggregateQuery.js.map +1 -1
- package/dist/cjs/listing/api/queries/useListingQuery.js +1 -1
- package/dist/cjs/listing/api/queries/useListingQuery.js.map +1 -1
- package/dist/cjs/listing/api/queries/usePredicate.js +2 -2
- package/dist/cjs/listing/api/queries/usePredicate.js.map +1 -1
- package/dist/cjs/listing/hooks/useListingBreadcrumbs.js +17 -3
- package/dist/cjs/listing/hooks/useListingBreadcrumbs.js.map +1 -1
- package/dist/cjs/listing/hooks/useListingCategories.js +20 -3
- package/dist/cjs/listing/hooks/useListingCategories.js.map +1 -1
- package/dist/cjs/listing/hooks/useListingFilters.js +1 -1
- package/dist/cjs/listing/hooks/useListingFilters.js.map +1 -1
- package/dist/cjs/listing/hooks/useListingMeta.js +4 -0
- package/dist/cjs/listing/hooks/useListingMeta.js.map +1 -1
- package/dist/cjs/listing/utils/getListingPageType.js +1 -1
- package/dist/cjs/listing/utils/getListingPageType.js.map +1 -1
- package/dist/cjs/ui/components/LazyImage.js.map +1 -1
- package/dist/cjs/utils/typeToSuffix.js +1 -0
- package/dist/cjs/utils/typeToSuffix.js.map +1 -1
- package/dist/esm/hooks/basket-hooks/useBasketLineItem/index.js +3 -2
- package/dist/esm/hooks/basket-hooks/useBasketLineItem/index.js.map +1 -1
- package/dist/esm/hooks/useCatalogResult/index.js +3 -3
- package/dist/esm/hooks/useCatalogResult/index.js.map +1 -1
- package/dist/esm/hooks/useLineItem/index.js +3 -2
- package/dist/esm/hooks/useLineItem/index.js.map +1 -1
- package/dist/esm/listing/api/queries/useAggregateQuery.js +10 -2
- package/dist/esm/listing/api/queries/useAggregateQuery.js.map +1 -1
- package/dist/esm/listing/api/queries/useListingQuery.js +1 -1
- package/dist/esm/listing/api/queries/useListingQuery.js.map +1 -1
- package/dist/esm/listing/api/queries/usePredicate.js +3 -2
- package/dist/esm/listing/api/queries/usePredicate.js.map +1 -1
- package/dist/esm/listing/hooks/useListingBreadcrumbs.js +17 -3
- package/dist/esm/listing/hooks/useListingBreadcrumbs.js.map +1 -1
- package/dist/esm/listing/hooks/useListingCategories.js +20 -3
- package/dist/esm/listing/hooks/useListingCategories.js.map +1 -1
- package/dist/esm/listing/hooks/useListingFilters.js +1 -1
- package/dist/esm/listing/hooks/useListingFilters.js.map +1 -1
- package/dist/esm/listing/hooks/useListingMeta.js +4 -0
- package/dist/esm/listing/hooks/useListingMeta.js.map +1 -1
- package/dist/esm/listing/utils/getListingPageType.js +1 -1
- package/dist/esm/listing/utils/getListingPageType.js.map +1 -1
- package/dist/esm/ui/components/LazyImage.js.map +1 -1
- package/dist/esm/utils/typeToSuffix.js +1 -0
- package/dist/esm/utils/typeToSuffix.js.map +1 -1
- package/dist/types/hooks/useLineItem/index.d.ts +1 -0
- package/dist/types/types/index.d.ts +1 -0
- package/dist/types/ui/components/LazyImage.d.ts +5 -5
- package/dist/types/utils/typeToSuffix.d.ts +1 -0
- package/package.json +5 -5
@@ -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\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","q","search","filter","Array","isArray","idx","findIndex","x","includes","key","join","searchTerm","parentId","name","url","categories","node","roots","i","length","hasOwnProperty","selectedNode","push"],"mappings":"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","sourcesContent":["import React from 'react'\nimport { NextRouter, useRouter } from 'next/router'\n\nimport { useListingConfig } from './useListingConfig'\nimport { getTranslatableField, typeToSuffix } from '../../utils'\nimport {\n useAggregateQuery,\n AggregateRequestEnum,\n AggregationResultType,\n} from '../api'\n\nimport { processCategoriesResponse, getAggregateTypeAndTerm } from './utils'\nimport { Aggregate, ListingTypesEnum } from '../types'\nimport { getListingPageType, getPostFilters } from '../utils'\n\nexport type Node = {\n children?: Node[]\n key: string\n parentId: string\n name: string\n url: string\n}\n\nexport type UseListingCategoriesResult = {\n data: Node[] | null\n isLoading: boolean\n currentCategory: string\n}\n\nconst ListingCategoriesStateContext = React.createContext<\n UseListingCategoriesResult | undefined\n>(undefined)\n\nexport function ListingCategoriesProvider({\n children,\n}: {\n children: React.ReactNode\n}) {\n const router = useRouter()\n const { categoryTreeConfig } = useListingConfig()\n\n const { data: aggData, isLoading } = useAggregateQuery(\n [categoryTreeConfig as Aggregate],\n AggregateRequestEnum.Categories\n )\n const currentCategory = generateCurrentUrl(router)\n\n const { type, term } = getAggregateTypeAndTerm(categoryTreeConfig)\n\n const data = React.useMemo(() => {\n if (aggData) {\n const response = processCategoriesResponse(aggData, type, term)\n\n const nodes = response.map((current) => buildNodes(current, router))\n\n const categoryTree = buildCategories(nodes)\n\n return categoryTree\n }\n return null\n }, [aggData, router])\n\n return (\n <ListingCategoriesStateContext.Provider\n value={{ data, isLoading, currentCategory }}\n >\n {children}\n </ListingCategoriesStateContext.Provider>\n )\n}\n\nexport const useListingCategories = () => {\n const context = React.useContext(ListingCategoriesStateContext)\n if (context === undefined) {\n throw new Error(\n 'useListingFilters must be used within a ListingFiltersProvider'\n )\n }\n return context\n}\n\nfunction generateUrl(current: AggregationResultType, router: NextRouter) {\n const suffix = typeToSuffix[getListingPageType(router)]\n const pageType = getListingPageType(router)\n let res\n\n if (pageType === ListingTypesEnum.Brand) {\n res = `/${router.query.slug}/${suffix}`\n if (router.query.cat) {\n res = `/${router.query.slug}/${router.query.cat}/${suffix}`\n }\n }\n if (pageType === ListingTypesEnum.Category) {\n res = `/${getTranslatableField(current.meta.slug)}/${suffix}`\n if (router.query.cat) {\n res = `/${router.query.slug}/${getTranslatableField(\n current.meta.slug\n )}/${suffix}`\n }\n }\n if (pageType === ListingTypesEnum.View) {\n res = `/${router.query.slug}/${getTranslatableField(\n current.meta.slug\n )}/${suffix}`\n }\n\n if (pageType === ListingTypesEnum.Search) {\n res = `/${getTranslatableField(current.meta.slug)}/c?search=${\n router.query.q ?? router.query.search\n }`\n }\n\n let filter = router.query.filter as any\n\n if (suffix === 'b') {\n if (filter) {\n if (Array.isArray(filter)) {\n filter = [...filter]\n const idx = filter.findIndex((x: any) => x.includes('category'))\n filter[idx] = `category;eq;\"${current.key}\"`\n } else {\n if (filter.includes('category')) {\n filter = `category;eq;\"${current.key}\"`\n } else {\n filter = [filter, `category;eq;\"${current.key}\"`]\n }\n }\n } else {\n filter = `category;eq;\"${current.key}\"`\n }\n }\n\n if (filter) {\n if (pageType === ListingTypesEnum.Search) {\n if (Array.isArray(filter)) {\n res += '&filter=' + filter.join('&filter=')\n } else {\n res += '&filter=' + filter\n }\n } else if (Array.isArray(filter)) {\n res += '?filter=' + filter.join('&filter=')\n } else {\n res += '?filter=' + filter\n }\n }\n\n return res as string\n}\n\nfunction generateCurrentUrl(router: NextRouter) {\n const suffix = typeToSuffix[getListingPageType(router)]\n let res = `/${router.query.slug}/${suffix}`\n const searchTerm = router.query.q || router.query.search\n\n if (router.query.cat) {\n res = `/${router.query.slug}/${router.query.cat}/${suffix}`\n }\n\n if (getListingPageType(router) === ListingTypesEnum.Search) {\n res += searchTerm ? '?search=' + searchTerm : ''\n }\n\n if (router.query?.filter) {\n if (getListingPageType(router) === ListingTypesEnum.Search) {\n res += `&filter=` + getPostFilters(router)\n } else {\n res += `?filter=` + getPostFilters(router)\n }\n }\n return res\n}\n\nfunction buildNodes(\n current: AggregationResultType,\n\n router: NextRouter\n): Node {\n return {\n parentId: current.meta.parentId,\n key: current.key,\n children: [],\n name: getTranslatableField(current.meta.name),\n url: generateUrl(current, router),\n }\n}\n\nfunction buildCategories(categories: Node[]): Node[] {\n const map = {}\n let node\n const roots = []\n let i\n\n for (i = 0; i < categories?.length; i += 1) {\n map[categories[i].key] = i\n categories[i].children = []\n }\n\n for (i = 0; i < categories?.length; i += 1) {\n node = categories[i]\n // ? map[node.parent.resourceId] handles the case when a product has specified categories\n // ? without any of the ancestor ones eg. have Man > Shoes > Loafers the product\n // ? has specified only Loafers or Shoes > Loafers.\n if (node.parentId && map.hasOwnProperty(node.parentId)) {\n if (node.key !== node.parentId) {\n const selectedNode = categories[map[node?.parentId]]\n selectedNode?.children?.push(node)\n }\n } else {\n roots.push(node)\n }\n }\n\n return roots\n}\n"],"file":"useListingCategories.js"}
|
@@ -197,7 +197,7 @@ function manageFilter(pair, query, remove) {
|
|
197
197
|
|
198
198
|
function createAggregateQuery(type, slug, aggPair, remove, router) {
|
199
199
|
if (type === _types.ListingTypesEnum.Search) {
|
200
|
-
return "/search?q=" + slug + "&" + manageFilter(aggPair, router.query, remove);
|
200
|
+
return router.query.q ? "/search?q=" + router.query.q + "&" + manageFilter(aggPair, router.query, remove) : "/" + slug + "/c?search=" + router.query.search + "&" + manageFilter(aggPair, router.query, remove);
|
201
201
|
}
|
202
202
|
|
203
203
|
if (router.query.cat) {
|
@@ -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 {\n RangeAggregation,\n StatAggregation,\n TermAggregation,\n} from '@sentecacommerce/sdk'\nimport { getSelectedFilters } from '../../utils'\nexport {\n RangeAggregation,\n StatAggregation,\n TermAggregation,\n} from '@sentecacommerce/sdk'\n\ntype AggPair = {\n aggType: string\n aggKey: string\n aggOperator: string\n}\n\nexport type ListingAggregationResultType = {\n selected: boolean\n data: AggregationResultType\n meta: any\n aggregationType?: string\n onClick: () => void\n}\n\nexport type ListingAggregateType = {\n name: string\n component: string\n type: string\n selectedCount: number\n items: ListingAggregationResultType[]\n clearAll: () => void\n raw: StatAggregation | RangeAggregation | TermAggregation\n}\n\nexport type UseListingFiltersResult = {\n data?: ListingAggregateType[]\n clearAllFilters: () => void\n selectedFilters: ListingAggregationResultType[]\n isLoading: boolean\n isFetching: boolean\n}\n\nconst ListingFiltersStateContext = React.createContext<\n UseListingFiltersResult | undefined\n>(undefined)\n\nexport function ListingFiltersProvider({\n children,\n}: {\n children: React.ReactNode\n}) {\n const { aggregates, type: pageType } = useListingConfig()\n\n const { data: aggData, isLoading, isFetching } = useAggregateQuery(\n aggregates as Aggregate[],\n AggregateRequestEnum.Filters\n )\n\n const router = useRouter()\n const slug = useListingSlug()\n\n const data = React.useMemo(() => {\n if (!isLoading && aggData) {\n const result = aggregates\n ?.sort((a, b) => a.order - b.order)\n .map((currentAggregate) => {\n const type = currentAggregate.aggregationType.toString()\n const term = currentAggregate.aggregationDefinition.split(':')[0]\n const filter = currentAggregate.filterDefinition\n const current: AggregateType = aggData[type].find(\n (agg: AggregateType) => agg.name === term\n )\n\n const generatedFilters = generateFilters({\n rawFilters: current,\n filter,\n router,\n type,\n slug,\n pageType,\n })\n\n const selectedCount = generatedFilters?.reduce((count, res) => {\n if (res.selected) count++\n return count\n }, 0)\n\n const attributeResult = ({\n name: currentAggregate.label,\n component: currentAggregate.component,\n items: generatedFilters,\n selectedCount,\n raw: current,\n clearAll: () =>\n router.push({\n pathname: router.pathname,\n query: {\n ...router.query,\n filter: filterByType(router.query.filter, filter),\n },\n }),\n type: type,\n } as unknown) as ListingAggregateType\n\n return attributeResult\n })\n\n return result\n }\n return undefined\n }, [aggData, router])\n\n const clearAllFilters = () => {\n const query = { ...router.query }\n delete query.filter\n\n router.push({\n pathname: router.pathname,\n query,\n })\n }\n\n const selectedFilters = React.useMemo(() => {\n return getSelectedFilters(router, data as any) as any\n }, [router, data])\n\n return (\n <ListingFiltersStateContext.Provider\n value={{ data, clearAllFilters, selectedFilters, isLoading, isFetching }}\n >\n {children}\n </ListingFiltersStateContext.Provider>\n )\n}\n\nexport function useListingFilters() {\n const context = React.useContext(ListingFiltersStateContext)\n if (context === undefined) {\n throw new Error(\n 'useListingFilters must be used within a ListingFiltersProvider'\n )\n }\n return context\n}\n\nfunction generateFilters({\n rawFilters,\n type,\n filter,\n slug,\n router,\n pageType,\n}: {\n rawFilters: AggregateType\n type: string\n filter: string\n slug: string\n router: NextRouter\n pageType: ListingTypesEnum\n}) {\n return rawFilters.results\n ?.filter((res) => res.count > 0)\n ?.map((currentTerm) => {\n const filterKey = mapKey(currentTerm, type)\n\n const selected = !!router.query?.filter?.includes(\n `${filter};${filtersOperatorsMap[type]};${filterKey}`\n )\n\n return {\n data: currentTerm,\n selected,\n meta: currentTerm.meta,\n onClick: () => {\n router.push(\n createAggregateQuery(\n pageType,\n slug,\n {\n aggType: filter,\n aggKey: filterKey,\n aggOperator: filtersOperatorsMap[type],\n },\n selected,\n router\n )\n )\n },\n }\n })\n}\n\nexport const filtersOperatorsMap = {\n ranges: 'range',\n stats: 'range',\n terms: 'eq',\n}\n\nfunction mapKey(r: any, type: any) {\n const keysMap = {\n terms: `\"${r.key}\"`,\n ranges: `${r.from},${r.to}`,\n }\n if (!keysMap[type]) return r.key\n\n return keysMap[type]\n}\n\nfunction manageFilter(pair: AggPair, query: any, remove: boolean) {\n const stripped = stripQueryProps(query, ['page']) // reset pagination on filter\n let q = generateQueryStringFromQuery(stripped)\n let filter = `filter=${pair.aggType};${pair.aggOperator};${pair.aggKey}`\n if (remove) {\n q = q\n .replace(`&${filter}`, '')\n .replace(`${filter}&`, '')\n .replace(filter, '')\n filter = ''\n }\n const result = `${q ? q : ''}${filter ? `${q ? '&' : ''}${filter}` : ''}`\n return result\n}\n\nfunction createAggregateQuery(\n type: ListingTypesEnum,\n slug: string,\n aggPair: AggPair,\n remove: boolean,\n router: NextRouter\n) {\n if (type === ListingTypesEnum.Search) {\n return `/search?q=${slug}&${manageFilter(aggPair, router.query, remove)}`\n }\n\n if (router.query.cat) {\n return `/${router.query.slug}/${router.query.cat}/${\n typeToSuffix[type]\n }?${manageFilter(aggPair, router.query, remove)}`\n }\n\n return `/${slug}/${typeToSuffix[type]}?${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n}\n\nfunction filterByType(\n filters: string | string[] | undefined,\n filterName: string\n) {\n if (!filters) return\n\n if (typeof filters === 'string') {\n if (filters.includes(filterName)) return\n\n return filters\n }\n\n return filters.filter((filter) => !filter.includes(filterName))\n}\n"],"file":"useListingFilters.js"}
|
1
|
+
{"version":3,"sources":["../../../../src/listing/hooks/useListingFilters.tsx"],"names":["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","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 router.query.q\n ? `/search?q=${router.query.q}&${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n : `/${slug}/c?search=${router.query.search}&${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n }\n\n if (router.query.cat) {\n return `/${router.query.slug}/${router.query.cat}/${\n typeToSuffix[type]\n }?${manageFilter(aggPair, router.query, remove)}`\n }\n\n return `/${slug}/${typeToSuffix[type]}?${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n}\n\nfunction filterByType(\n filters: string | string[] | undefined,\n filterName: string\n) {\n if (!filters) return\n\n if (typeof filters === 'string') {\n if (filters.includes(filterName)) return\n\n return filters\n }\n\n return filters.filter((filter) => !filter.includes(filterName))\n}\n"],"file":"useListingFilters.js"}
|
@@ -104,6 +104,10 @@ function processDisplayName(name, breadcrumb, router, aggData, categoriesData) {
|
|
104
104
|
return categoryName + " \u043E\u0442 " + listingName;
|
105
105
|
}
|
106
106
|
|
107
|
+
if (type === _types.ListingTypesEnum.Search && router != null && router.query.search) {
|
108
|
+
return listingName + " \u043E\u0442 \"" + router.query.search + "\"";
|
109
|
+
}
|
110
|
+
|
107
111
|
return listingName;
|
108
112
|
}
|
109
113
|
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/listing/hooks/useListingMeta.tsx"],"names":["useListingMeta","router","predicate","data","listingQuery","categoriesData","filtersData","result","React","useMemo","customFields","custom","assets","description","trim","displayName","processDisplayName","name","breadcrumb","metaTitle","metaKeywords","metaDescription","didYouMean","getAssetByKey","key","getCustomFieldByKey","aggData","listingName","brandName","getBrandName","categoryName","getCategoryName","type","query","cat","attribute","label","ListingTypesEnum","Category","Brand","getFilterByType","filterType","filterId","Array","isArray","filter","filters","x","includes","length","filterTerm","exec","isFiltered","brandId","brand","find","items","meta","categories","categoryId","stack","node","pop","children","forEach","child","push"],"mappings":"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","sourcesContent":["import React from 'react'\nimport { useListingQuery, usePredicate } from '../api'\nimport { customFieldsToMap, escape, getTranslatableField } from '../../utils'\n\nimport { assetsFieldsToMap, AssetType } from '../../utils/assetsToMap'\nimport { NextRouter, useRouter } from 'next/router'\nimport { LangValue } from '@sentecacommerce/sdk'\nimport { getListingPageType } from '../utils'\nimport { ListingTypesEnum } from '../types'\n\nimport { ListingAggregateType, useListingFilters } from './useListingFilters'\nimport { Node, useListingCategories } from './useListingCategories'\n\nexport type UseListingMetaResult = {\n displayName: string\n description: string\n\n metaTitle: string\n metaKeywords: string\n metaDescription: string\n\n didYouMean?: string\n\n getAssetByKey: (key: string) => AssetType | undefined\n getCustomFieldByKey: (key: string) => any | undefined\n}\n\nexport const useListingMeta = (): UseListingMetaResult => {\n const router = useRouter()\n const { data: predicate } = usePredicate()\n const { data: listingQuery } = useListingQuery()\n const { data: categoriesData } = useListingCategories()\n\n const { data: filtersData } = useListingFilters()\n\n const result = React.useMemo((): UseListingMetaResult => {\n const customFields = customFieldsToMap(predicate?.custom)\n const assets = assetsFieldsToMap(predicate?.assets)\n\n const description =\n getTranslatableField(predicate?.description)?.trim() || ''\n\n const displayName = processDisplayName(\n predicate?.name,\n predicate?.breadcrumb,\n router,\n filtersData,\n categoriesData\n )\n return {\n displayName,\n description,\n metaTitle: getTranslatableField(predicate?.metaTitle),\n metaKeywords: getTranslatableField(predicate?.metaKeywords),\n metaDescription: escape(\n getTranslatableField(predicate?.metaDescription) || description\n ),\n\n didYouMean: listingQuery?.didYouMean,\n\n getAssetByKey: (key: string) => assets[key],\n getCustomFieldByKey: (key: string) => customFields[key],\n }\n }, [\n predicate?.custom,\n predicate?.assets,\n predicate?.description,\n predicate?.name,\n predicate?.breadcrumb,\n predicate?.metaTitle,\n predicate?.metaKeywords,\n predicate?.metaDescription,\n router,\n filtersData,\n listingQuery?.didYouMean,\n categoriesData,\n ])\n\n return result\n}\n\nfunction processDisplayName(\n name?: LangValue[],\n breadcrumb?: any,\n router?: NextRouter,\n aggData?: ListingAggregateType[],\n categoriesData?: Node[] | null\n) {\n const listingName = getTranslatableField(name)\n const brandName = getBrandName(router, aggData)\n const categoryName = getCategoryName(router, categoriesData)\n\n const type = getListingPageType(router as NextRouter)\n if (router?.query.cat) {\n const attribute = getTranslatableField(breadcrumb?.label)\n if (type === ListingTypesEnum.Category) {\n if (!brandName) {\n return `${listingName} за ${attribute}`\n }\n\n return `${listingName} за ${attribute} от ${brandName}`\n }\n\n if (type === ListingTypesEnum.Brand) {\n if (!categoryName) {\n return `Всички продукти от ${listingName} за ${attribute}`\n }\n\n return `${categoryName} от ${listingName} за ${attribute}`\n }\n }\n\n if (type === ListingTypesEnum.Category && brandName) {\n return `${listingName} от ${brandName}`\n }\n\n if (type === ListingTypesEnum.Brand) {\n if (!categoryName) {\n return `Всички продукти от ${listingName}`\n }\n return `${categoryName} от ${listingName}`\n }\n return listingName\n}\n\nfunction getFilterByType(filterType: string, router?: NextRouter) {\n let filterId = ''\n if (Array.isArray(router?.query.filter)) {\n const filters = router?.query.filter?.filter((x) => x?.includes(filterType))\n if (filters?.length && filters.length > 1) {\n return ''\n }\n\n const filterTerm = /\\d+/.exec(filters?.[0] || '')?.[0]\n\n if (!filterTerm) return ''\n filterId = filterTerm\n } else {\n const isFiltered = router?.query?.filter?.includes(filterType)\n if (!isFiltered) {\n return ''\n }\n\n filterId = /(\\w+)-(\\d+)/.exec(router?.query.filter as string)?.[0] as string\n }\n return filterId\n}\n\nfunction getBrandName(\n router?: NextRouter,\n filtersData?: ListingAggregateType[]\n) {\n const brandId = getFilterByType('brand', router)\n\n const brand = filtersData\n ?.find((x) => x.name === 'Brands')\n ?.items?.find((x) => x.data.key === brandId)\n\n return getTranslatableField(brand?.meta?.name)\n}\nfunction getCategoryName(router?: NextRouter, categories?: Node[] | null) {\n const categoryId = getFilterByType('category', router)\n\n if (!categoryId || !categories) return\n\n const stack = [...(categories as Node[])]\n\n while (stack?.length && stack.length > 0) {\n const node = stack.pop()\n if (node?.key === categoryId) {\n return node.name\n }\n\n node?.children?.forEach((child) => stack.push(child))\n }\n}\n"],"file":"useListingMeta.js"}
|
1
|
+
{"version":3,"sources":["../../../../src/listing/hooks/useListingMeta.tsx"],"names":["useListingMeta","router","predicate","data","listingQuery","categoriesData","filtersData","result","React","useMemo","customFields","custom","assets","description","trim","displayName","processDisplayName","name","breadcrumb","metaTitle","metaKeywords","metaDescription","didYouMean","getAssetByKey","key","getCustomFieldByKey","aggData","listingName","brandName","getBrandName","categoryName","getCategoryName","type","query","cat","attribute","label","ListingTypesEnum","Category","Brand","Search","search","getFilterByType","filterType","filterId","Array","isArray","filter","filters","x","includes","length","filterTerm","exec","isFiltered","brandId","brand","find","items","meta","categories","categoryId","stack","node","pop","children","forEach","child","push"],"mappings":"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","sourcesContent":["import React from 'react'\nimport { useListingQuery, usePredicate } from '../api'\nimport { customFieldsToMap, escape, getTranslatableField } from '../../utils'\n\nimport { assetsFieldsToMap, AssetType } from '../../utils/assetsToMap'\nimport { NextRouter, useRouter } from 'next/router'\nimport { LangValue } from '@sentecacommerce/sdk'\nimport { getListingPageType } from '../utils'\nimport { ListingTypesEnum } from '../types'\n\nimport { ListingAggregateType, useListingFilters } from './useListingFilters'\nimport { Node, useListingCategories } from './useListingCategories'\n\nexport type UseListingMetaResult = {\n displayName: string\n description: string\n\n metaTitle: string\n metaKeywords: string\n metaDescription: string\n\n didYouMean?: string\n\n getAssetByKey: (key: string) => AssetType | undefined\n getCustomFieldByKey: (key: string) => any | undefined\n}\n\nexport const useListingMeta = (): UseListingMetaResult => {\n const router = useRouter()\n const { data: predicate } = usePredicate()\n const { data: listingQuery } = useListingQuery()\n const { data: categoriesData } = useListingCategories()\n\n const { data: filtersData } = useListingFilters()\n\n const result = React.useMemo((): UseListingMetaResult => {\n const customFields = customFieldsToMap(predicate?.custom)\n const assets = assetsFieldsToMap(predicate?.assets)\n\n const description =\n getTranslatableField(predicate?.description)?.trim() || ''\n\n const displayName = processDisplayName(\n predicate?.name,\n predicate?.breadcrumb,\n router,\n filtersData,\n categoriesData\n )\n return {\n displayName,\n description,\n metaTitle: getTranslatableField(predicate?.metaTitle),\n metaKeywords: getTranslatableField(predicate?.metaKeywords),\n metaDescription: escape(\n getTranslatableField(predicate?.metaDescription) || description\n ),\n\n didYouMean: listingQuery?.didYouMean,\n\n getAssetByKey: (key: string) => assets[key],\n getCustomFieldByKey: (key: string) => customFields[key],\n }\n }, [\n predicate?.custom,\n predicate?.assets,\n predicate?.description,\n predicate?.name,\n predicate?.breadcrumb,\n predicate?.metaTitle,\n predicate?.metaKeywords,\n predicate?.metaDescription,\n router,\n filtersData,\n listingQuery?.didYouMean,\n categoriesData,\n ])\n\n return result\n}\n\nfunction processDisplayName(\n name?: LangValue[],\n breadcrumb?: any,\n router?: NextRouter,\n aggData?: ListingAggregateType[],\n categoriesData?: Node[] | null\n) {\n const listingName = getTranslatableField(name)\n const brandName = getBrandName(router, aggData)\n const categoryName = getCategoryName(router, categoriesData)\n\n const type = getListingPageType(router as NextRouter)\n if (router?.query.cat) {\n const attribute = getTranslatableField(breadcrumb?.label)\n if (type === ListingTypesEnum.Category) {\n if (!brandName) {\n return `${listingName} за ${attribute}`\n }\n\n return `${listingName} за ${attribute} от ${brandName}`\n }\n\n if (type === ListingTypesEnum.Brand) {\n if (!categoryName) {\n return `Всички продукти от ${listingName} за ${attribute}`\n }\n\n return `${categoryName} от ${listingName} за ${attribute}`\n }\n }\n\n if (type === ListingTypesEnum.Category && brandName) {\n return `${listingName} от ${brandName}`\n }\n\n if (type === ListingTypesEnum.Brand) {\n if (!categoryName) {\n return `Всички продукти от ${listingName}`\n }\n return `${categoryName} от ${listingName}`\n }\n\n if (type === ListingTypesEnum.Search && router?.query.search) {\n return `${listingName} от \"${router.query.search}\"`\n }\n return listingName\n}\n\nfunction getFilterByType(filterType: string, router?: NextRouter) {\n let filterId = ''\n if (Array.isArray(router?.query.filter)) {\n const filters = router?.query.filter?.filter((x) => x?.includes(filterType))\n if (filters?.length && filters.length > 1) {\n return ''\n }\n\n const filterTerm = /\\d+/.exec(filters?.[0] || '')?.[0]\n\n if (!filterTerm) return ''\n filterId = filterTerm\n } else {\n const isFiltered = router?.query?.filter?.includes(filterType)\n if (!isFiltered) {\n return ''\n }\n\n filterId = /(\\w+)-(\\d+)/.exec(router?.query.filter as string)?.[0] as string\n }\n return filterId\n}\n\nfunction getBrandName(\n router?: NextRouter,\n filtersData?: ListingAggregateType[]\n) {\n const brandId = getFilterByType('brand', router)\n\n const brand = filtersData\n ?.find((x) => x.name === 'Brands')\n ?.items?.find((x) => x.data.key === brandId)\n\n return getTranslatableField(brand?.meta?.name)\n}\nfunction getCategoryName(router?: NextRouter, categories?: Node[] | null) {\n const categoryId = getFilterByType('category', router)\n\n if (!categoryId || !categories) return\n\n const stack = [...(categories as Node[])]\n\n while (stack?.length && stack.length > 0) {\n const node = stack.pop()\n if (node?.key === categoryId) {\n return node.name\n }\n\n node?.children?.forEach((child) => stack.push(child))\n }\n}\n"],"file":"useListingMeta.js"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/listing/utils/getListingPageType.ts"],"names":["getListingPageType","router","pageTypeMap","ListingTypesEnum","Category","Brand","View","Collection","query","q","Search","Error","route"],"mappings":";;;;;AACA;;AAEO,IAAMA,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,MAAD,EAA0C;AAC1E,MAAMC,WAAW,GAAG;AAClB,iBAAaC,mBAAiBC,QADZ;AAElB,iBAAaD,mBAAiBE,KAFZ;AAGlB,iBAAaF,mBAAiBG,IAHZ;AAIlB,kBAAcH,mBAAiBI,UAJb;AAKlB,uBAAmBJ,mBAAiBC,QALlB;AAMlB,uBAAmBD,mBAAiBE;AANlB,GAApB;;AASA,MAAIJ,MAAM,CAACO,KAAP,CAAaC,
|
1
|
+
{"version":3,"sources":["../../../../src/listing/utils/getListingPageType.ts"],"names":["getListingPageType","router","pageTypeMap","ListingTypesEnum","Category","Brand","View","Collection","query","q","search","Search","Error","route"],"mappings":";;;;;AACA;;AAEO,IAAMA,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,MAAD,EAA0C;AAC1E,MAAMC,WAAW,GAAG;AAClB,iBAAaC,mBAAiBC,QADZ;AAElB,iBAAaD,mBAAiBE,KAFZ;AAGlB,iBAAaF,mBAAiBG,IAHZ;AAIlB,kBAAcH,mBAAiBI,UAJb;AAKlB,uBAAmBJ,mBAAiBC,QALlB;AAMlB,uBAAmBD,mBAAiBE;AANlB,GAApB;;AASA,MAAIJ,MAAM,CAACO,KAAP,CAAaC,CAAb,IAAkBR,MAAM,CAACO,KAAP,CAAaE,MAAnC,EAA2C;AACzC,WAAOP,mBAAiBQ,MAAxB;AACD;;AAED,MAAI,CAACT,WAAL,EAAkB,MAAM,IAAIU,KAAJ,CAAU,6BAAV,CAAN;AAElB,SAAOV,WAAW,CAACD,MAAM,CAACY,KAAR,CAAlB;AACD,CAjBM","sourcesContent":["import { NextRouter } from 'next/router'\nimport { ListingTypesEnum } from '..'\n\nexport const getListingPageType = (router: NextRouter): ListingTypesEnum => {\n const pageTypeMap = {\n '/[slug]/c': ListingTypesEnum.Category,\n '/[slug]/b': ListingTypesEnum.Brand,\n '/[slug]/v': ListingTypesEnum.View,\n '/[slug]/ct': ListingTypesEnum.Collection,\n '/[slug]/[cat]/c': ListingTypesEnum.Category,\n '/[slug]/[cat]/b': ListingTypesEnum.Brand,\n }\n\n if (router.query.q || router.query.search) {\n return ListingTypesEnum.Search\n }\n\n if (!pageTypeMap) throw new Error('Invalid listing route type!')\n\n return pageTypeMap[router.route]\n}\n"],"file":"getListingPageType.js"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/ui/components/LazyImage.tsx"],"names":["transparentPixel","LazyImage","width","height","alt","background","objectFit","isBackgroundOverImage","rest","ratio","absoluteStyle","position","top","left","paddingBottom","undefined","backgroundColor","display","alignItems","justifyContent"],"mappings":";;;;;;;;;;;AAAA;;AAgBO,IAAMA,gBAAgB,GAC3B,oHADK;;;AAGA,IAAMC,SAAS,GAAG,SAAZA,SAAY,OAQH;AAAA,MAPpBC,KAOoB,QAPpBA,KAOoB;AAAA,MANpBC,MAMoB,QANpBA,MAMoB;AAAA,MALpBC,GAKoB,QALpBA,GAKoB;AAAA,MAJpBC,UAIoB,QAJpBA,UAIoB;AAAA,MAHpBC,SAGoB,QAHpBA,SAGoB;AAAA,MAFpBC,qBAEoB,QAFpBA,qBAEoB;AAAA,MADjBC,IACiB;AACpB,MAAMC,KAAK,GAAGN,MAAM,IAAID,KAAV,GAAkBC,MAAM,GAAGD,KAA3B,GAAmC,IAAjD;AAEA,MAAMQ,aAAkB,GAAG;AACzBC,IAAAA,QAAQ,EAAE,UADe;AAEzBC,IAAAA,GAAG,EAAE,CAFoB;AAGzBC,IAAAA,IAAI,EAAE,CAHmB;AAIzBX,IAAAA,KAAK,EAAE,MAJkB;AAKzBC,IAAAA,MAAM,EAAE;AALiB,GAA3B;AAQA;AACF;AACA;;AACE,sBACE;AACE,IAAA,KAAK,EAAE;AACLQ,MAAAA,QAAQ,EAAE,UADL;AAELG,MAAAA,aAAa,EAAEL,KAAK,GAAMA,KAAK,GAAG,GAAd,SAAuBM,SAFtC;AAGLb,MAAAA,KAAK,EAAE,MAHF;AAILC,MAAAA,MAAM,EAAEM,KAAK,GAAG,CAAH,GAAOM,SAJf;AAKLC,MAAAA,eAAe,EAAEX;AALZ;AADT,kBASE;AACE,IAAA,KAAK,gCACAK,aADA;AAEHO,MAAAA,OAAO,EAAE,MAFN;AAGHC,MAAAA,UAAU,EAAE,QAHT;AAIHC,MAAAA,cAAc,EAAE;AAJb;AADP,kBAQE;AACE,IAAA,KAAK,EAAE;AACLjB,MAAAA,KAAK,EAAE,MADF;AAELC,MAAAA,MAAM,EAAEM,KAAK,GAAG,MAAH,GAAY,MAFpB;AAGLH,MAAAA,SAAS,EAAE;AAHN;AADT,KAMME,IANN;AAOE,IAAA,GAAG,EAAEJ;AAPP,KARF,CATF,EA2BGG,qBAAqB,iBACpB;AAAK,IAAA,KAAK,gCAAOG,aAAP;AAAsBM,MAAAA,eAAe,EAAEX;AAAvC;AAAV,IA5BJ,CADF;AAiCD,CAvDM","sourcesContent":["import React from 'react'\n\nexport type LazyImageProps = {\n width?: number\n height?: number\n src
|
1
|
+
{"version":3,"sources":["../../../../src/ui/components/LazyImage.tsx"],"names":["transparentPixel","LazyImage","width","height","alt","background","objectFit","isBackgroundOverImage","rest","ratio","absoluteStyle","position","top","left","paddingBottom","undefined","backgroundColor","display","alignItems","justifyContent"],"mappings":";;;;;;;;;;;AAAA;;AAgBO,IAAMA,gBAAgB,GAC3B,oHADK;;;AAGA,IAAMC,SAAS,GAAG,SAAZA,SAAY,OAQH;AAAA,MAPpBC,KAOoB,QAPpBA,KAOoB;AAAA,MANpBC,MAMoB,QANpBA,MAMoB;AAAA,MALpBC,GAKoB,QALpBA,GAKoB;AAAA,MAJpBC,UAIoB,QAJpBA,UAIoB;AAAA,MAHpBC,SAGoB,QAHpBA,SAGoB;AAAA,MAFpBC,qBAEoB,QAFpBA,qBAEoB;AAAA,MADjBC,IACiB;AACpB,MAAMC,KAAK,GAAGN,MAAM,IAAID,KAAV,GAAkBC,MAAM,GAAGD,KAA3B,GAAmC,IAAjD;AAEA,MAAMQ,aAAkB,GAAG;AACzBC,IAAAA,QAAQ,EAAE,UADe;AAEzBC,IAAAA,GAAG,EAAE,CAFoB;AAGzBC,IAAAA,IAAI,EAAE,CAHmB;AAIzBX,IAAAA,KAAK,EAAE,MAJkB;AAKzBC,IAAAA,MAAM,EAAE;AALiB,GAA3B;AAQA;AACF;AACA;;AACE,sBACE;AACE,IAAA,KAAK,EAAE;AACLQ,MAAAA,QAAQ,EAAE,UADL;AAELG,MAAAA,aAAa,EAAEL,KAAK,GAAMA,KAAK,GAAG,GAAd,SAAuBM,SAFtC;AAGLb,MAAAA,KAAK,EAAE,MAHF;AAILC,MAAAA,MAAM,EAAEM,KAAK,GAAG,CAAH,GAAOM,SAJf;AAKLC,MAAAA,eAAe,EAAEX;AALZ;AADT,kBASE;AACE,IAAA,KAAK,gCACAK,aADA;AAEHO,MAAAA,OAAO,EAAE,MAFN;AAGHC,MAAAA,UAAU,EAAE,QAHT;AAIHC,MAAAA,cAAc,EAAE;AAJb;AADP,kBAQE;AACE,IAAA,KAAK,EAAE;AACLjB,MAAAA,KAAK,EAAE,MADF;AAELC,MAAAA,MAAM,EAAEM,KAAK,GAAG,MAAH,GAAY,MAFpB;AAGLH,MAAAA,SAAS,EAAE;AAHN;AADT,KAMME,IANN;AAOE,IAAA,GAAG,EAAEJ;AAPP,KARF,CATF,EA2BGG,qBAAqB,iBACpB;AAAK,IAAA,KAAK,gCAAOG,aAAP;AAAsBM,MAAAA,eAAe,EAAEX;AAAvC;AAAV,IA5BJ,CADF;AAiCD,CAvDM","sourcesContent":["import React from 'react'\n\nexport type LazyImageProps = {\n width?: number\n height?: number\n src?: string\n srcSet?: string\n alt?: string\n background?: string\n isBackgroundOverImage?: boolean\n objectFit?: string\n} & React.DetailedHTMLProps<\n React.ImgHTMLAttributes<HTMLImageElement>,\n HTMLImageElement\n>\n\nexport const transparentPixel =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAAAAAA6fptVAAAACklEQVQYV2P4DwABAQEAWk1v8QAAAABJRU5ErkJggg=='\n\nexport const LazyImage = ({\n width,\n height,\n alt,\n background,\n objectFit,\n isBackgroundOverImage,\n ...rest\n}: LazyImageProps) => {\n const ratio = height && width ? height / width : null\n\n const absoluteStyle: any = {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n }\n\n /**\n * Using inline styles to support both styled components and postcss\n */\n return (\n <div\n style={{\n position: 'relative',\n paddingBottom: ratio ? `${ratio * 100}%` : undefined,\n width: '100%',\n height: ratio ? 0 : undefined,\n backgroundColor: background,\n }}\n >\n <div\n style={{\n ...absoluteStyle,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <img\n style={{\n width: '100%',\n height: ratio ? '100%' : 'auto',\n objectFit: 'contain',\n }}\n {...rest}\n alt={alt}\n />\n </div>\n {isBackgroundOverImage && (\n <div style={{ ...absoluteStyle, backgroundColor: background }} />\n )}\n </div>\n )\n}\n"],"file":"LazyImage.js"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/typeToSuffix.ts"],"names":["typeToSuffix","category","brand","view","collection"],"mappings":";;;;AAAO,IAAMA,YAAY,GAAG;AAC1BC,EAAAA,QAAQ,EAAE,GADgB;AAE1BC,EAAAA,
|
1
|
+
{"version":3,"sources":["../../../src/utils/typeToSuffix.ts"],"names":["typeToSuffix","category","text","brand","view","collection"],"mappings":";;;;AAAO,IAAMA,YAAY,GAAG;AAC1BC,EAAAA,QAAQ,EAAE,GADgB;AAE1BC,EAAAA,IAAI,EAAE,GAFoB;AAG1BC,EAAAA,KAAK,EAAE,GAHmB;AAI1BC,EAAAA,IAAI,EAAE,GAJoB;AAK1BC,EAAAA,UAAU,EAAE;AALc,CAArB","sourcesContent":["export const typeToSuffix = {\n category: 'c',\n text: 'c',\n brand: 'b',\n view: 'v',\n collection: 'ct',\n}\n"],"file":"typeToSuffix.js"}
|
@@ -17,7 +17,7 @@ export var useBasketLineItem = props => {
|
|
17
17
|
onMouseLeave: _onMouseLeave
|
18
18
|
} = usePrefetchProduct(getTranslatableField(props == null ? void 0 : (_props$item = props.item) == null ? void 0 : _props$item.productSlug));
|
19
19
|
var data = React.useMemo(() => {
|
20
|
-
var _item$variant, _item$variant2, _item$discountedPrice, _item$discountedPrice2, _item$discountedPrice3, _item$discountedPrice4, _item$offer, _item$variant3, _item$variant4, _item$brandSnapshot, _item$brandSnapshot2, _item$variant5, _item$variant6, _item$variant6$select, _item$variant8, _item$variant9, _item$variant9$shippi, _item$variant10, _item$variant10$shipp, _item$variant11, _item$variant11$shipp, _item$variant12, _item$variant12$shipp, _item$offer2, _item$taxedPrice, _item$taxedPrice2, _item$offer3, _item$variant13, _item$variant13$inven, _item$variant14, _item$variant14$inven, _item$variant15, _item$variant15$inven;
|
20
|
+
var _item$variant, _item$variant2, _item$discountedPrice, _item$discountedPrice2, _item$discountedPrice3, _item$discountedPrice4, _item$offer, _item$variant3, _item$variant4, _item$brandSnapshot, _item$brandSnapshot2, _item$variant5, _item$variant6, _item$variant6$select, _item$variant8, _item$variant9, _item$variant9$shippi, _item$variant10, _item$variant10$shipp, _item$variant11, _item$variant11$shipp, _item$variant12, _item$variant12$shipp, _item$offer2, _item$taxedPrice, _item$taxedPrice2, _item$offer3, _item$variant13, _item$variant13$inven, _item$variant14, _item$variant14$inven, _item$variant15, _item$variant15$inven, _item$variant16, _item$variant16$offer;
|
21
21
|
|
22
22
|
var {
|
23
23
|
item
|
@@ -66,7 +66,8 @@ export var useBasketLineItem = props => {
|
|
66
66
|
unitDiscountedPrice,
|
67
67
|
inventory: {
|
68
68
|
hasAvailableQuantity: item != null && (_item$variant13 = item.variant) != null && (_item$variant13$inven = _item$variant13.inventorySnapshot) != null && _item$variant13$inven.canOrder ? true : false,
|
69
|
-
availableQuantity: item != null && (_item$variant14 = item.variant) != null && (_item$variant14$inven = _item$variant14.inventorySnapshot) != null && _item$variant14$inven.canOrder ? Number(item == null ? void 0 : (_item$variant15 = item.variant) == null ? void 0 : (_item$variant15$inven = _item$variant15.inventorySnapshot) == null ? void 0 : _item$variant15$inven.availableQuantity) : 0
|
69
|
+
availableQuantity: item != null && (_item$variant14 = item.variant) != null && (_item$variant14$inven = _item$variant14.inventorySnapshot) != null && _item$variant14$inven.canOrder ? Number(item == null ? void 0 : (_item$variant15 = item.variant) == null ? void 0 : (_item$variant15$inven = _item$variant15.inventorySnapshot) == null ? void 0 : _item$variant15$inven.availableQuantity) : 0,
|
70
|
+
maxQuantity: item == null ? void 0 : (_item$variant16 = item.variant) == null ? void 0 : (_item$variant16$offer = _item$variant16.offer) == null ? void 0 : _item$variant16$offer.maxQuantity
|
70
71
|
},
|
71
72
|
getCustomFieldByKey: key => mappedCustomField[key],
|
72
73
|
getAttributeByKey: key => mappedAttributes[key],
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../../src/hooks/basket-hooks/useBasketLineItem/index.ts"],"names":["React","myCartApi","usePrefetchProduct","getTranslatableField","createMappedAttributes","getTimeStamp","calculateTotalPrice","createSelectedOption","assetsFieldsToMap","customFieldsToMap","useBasketLineItem","props","isExpired","setIsExpired","useState","syncBasket","useSync","onMouseDown","onMouseEnter","onMouseLeave","item","productSlug","data","useMemo","expiry","snapshotFrom","offer","variant","mappedAttributes","attributes","unitDiscountedPrice","discountedPricePerQuantity","discountedPrice","value","mappedCustomField","custom","productId","variantId","_id","lineItemId","collapseKey","offerId","sku","name","productName","slug","brand","brandSnapshot","assets","thumbnail","productThumbnailUrl","images","mappedSelectedOptions","selectedOptions","map","option","availableOptions","lineItemMode","status","unitOfWeight","shippingData","height","width","unitOfMetric","isPriceChanged","priceChanged","quantityInBasket","quantity","totalPrice","originalPrice","taxedPrice","totalGross","totalDiscountedPrice","unitPrice","inventory","hasAvailableQuantity","inventorySnapshot","canOrder","availableQuantity","Number","getCustomFieldByKey","key","getAttributeByKey","callback"],"mappings":"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","sourcesContent":["import React from 'react'\nimport { myCartApi } from '../../../'\nimport { usePrefetchProduct } from '../../../'\nimport {\n LineItemDTO,\n LineItemDTOLineItemModeEnum,\n LineItemDTOStatusEnum,\n MoneyDTO,\n SelectedOptionDTO,\n ShippingDataDTOUnitOfMetricEnum,\n ShippingDataDTOUnitOfWeightEnum,\n} from '@sentecacommerce/sdk'\nimport { getTranslatableField } from '../../../'\nimport { BaseProductType } from '../../useLineItem'\nimport {\n createMappedAttributes,\n getTimeStamp,\n calculateTotalPrice,\n} from './utils'\nimport {\n createSelectedOption,\n SelectedOptionType,\n} from '../../useProduct/utils'\nimport { assetsFieldsToMap, AssetsMap } from '../../../utils/assetsToMap'\nimport { customFieldsToMap } from '../../../utils'\n\ninterface BasketLineItemProps extends BaseProductType {\n productId: string\n lineItemId: string\n quantityInBasket: number\n unitPrice?: MoneyDTO\n unitDiscountedPrice?: MoneyDTO\n totalPrice?: MoneyDTO\n totalDiscountedPrice?: MoneyDTO\n lineItemMode: LineItemDTOLineItemModeEnum\n status: LineItemDTOStatusEnum\n mappedSelectedOptions?: SelectedOptionType[]\n selectedOptions?: SelectedOptionDTO[]\n isPriceChanged: boolean\n brand?: {\n assets?: AssetsMap\n name?: string\n }\n unitOfWeight?: ShippingDataDTOUnitOfWeightEnum\n height?: number\n width?: number\n unitOfMetric?: ShippingDataDTOUnitOfMetricEnum\n\n thumbnail: string\n\n getAttributeByKey: (\n key: string\n ) => {\n _id: string\n label: string\n value: string\n extra: any\n }\n\n getCustomFieldByKey: (key: string) => any\n}\n\nexport const useBasketLineItem = (props: {\n item: LineItemDTO\n expiry?: number\n}): BasketLineItemProps => {\n const [isExpired, setIsExpired] = React.useState<boolean>(false)\n const [syncBasket] = myCartApi.useSync()\n const { onMouseDown, onMouseEnter, onMouseLeave } = usePrefetchProduct(\n getTranslatableField(props?.item?.productSlug)\n )\n\n const data = React.useMemo((): BasketLineItemProps => {\n const { item } = props\n\n if (props?.expiry && getTimeStamp(props.expiry) < item.snapshotFrom) {\n setIsExpired(true)\n }\n\n const offer = item?.variant?.offer\n\n const mappedAttributes = createMappedAttributes(item?.variant?.attributes)\n\n const unitDiscountedPrice =\n item?.discountedPricePerQuantity?.[0]?.discountedPrice?.value ??\n item?.offer?.discountedPrice\n\n const mappedCustomField = customFieldsToMap(item.custom)\n\n return {\n productId: item?.productId,\n variantId: item?.variant?._id,\n lineItemId: item?._id,\n collapseKey: item?.collapseKey,\n offerId: offer?._id,\n sku: item?.variant?.sku,\n\n name: getTranslatableField(item?.productName),\n slug: getTranslatableField(item?.productSlug),\n brand: {\n name: getTranslatableField(item?.brandSnapshot?.name),\n assets: assetsFieldsToMap(item?.brandSnapshot?.assets),\n },\n thumbnail: item?.productThumbnailUrl,\n images: item?.variant?.images,\n\n mappedSelectedOptions: item?.variant?.selectedOptions?.map((option) =>\n createSelectedOption(item?.variant?.availableOptions, option)\n ),\n\n selectedOptions: item?.variant?.selectedOptions,\n\n lineItemMode: item?.lineItemMode,\n status: item?.status,\n\n unitOfWeight: item?.variant?.shippingData?.unitOfWeight,\n height: item?.variant?.shippingData?.height,\n width: item?.variant?.shippingData?.width,\n unitOfMetric: item?.variant?.shippingData?.unitOfMetric,\n\n isPriceChanged: item?.priceChanged,\n quantityInBasket: item?.quantity,\n\n totalPrice: unitDiscountedPrice\n ? calculateTotalPrice(item?.offer?.originalPrice, item?.quantity)\n : item?.taxedPrice?.totalGross,\n totalDiscountedPrice: unitDiscountedPrice && item?.taxedPrice?.totalGross,\n\n unitPrice: item?.offer?.originalPrice,\n unitDiscountedPrice,\n\n inventory: {\n hasAvailableQuantity: item?.variant?.inventorySnapshot?.canOrder\n ? true\n : false,\n availableQuantity: item?.variant?.inventorySnapshot?.canOrder\n ? Number(item?.variant?.inventorySnapshot?.availableQuantity)\n : 0,\n },\n getCustomFieldByKey: (key: string) => mappedCustomField[key],\n getAttributeByKey: (key: string) => mappedAttributes[key],\n onMouseEnter: (callback: any) => onMouseEnter(callback),\n onMouseLeave: () => onMouseLeave(),\n onMouseDown: (callback: any) => () => onMouseDown(callback),\n }\n }, [props.item])\n\n if (isExpired) {\n syncBasket()\n setIsExpired(false)\n }\n\n return data\n}\n"],"file":"index.js"}
|
1
|
+
{"version":3,"sources":["../../../../../src/hooks/basket-hooks/useBasketLineItem/index.ts"],"names":["React","myCartApi","usePrefetchProduct","getTranslatableField","createMappedAttributes","getTimeStamp","calculateTotalPrice","createSelectedOption","assetsFieldsToMap","customFieldsToMap","useBasketLineItem","props","isExpired","setIsExpired","useState","syncBasket","useSync","onMouseDown","onMouseEnter","onMouseLeave","item","productSlug","data","useMemo","expiry","snapshotFrom","offer","variant","mappedAttributes","attributes","unitDiscountedPrice","discountedPricePerQuantity","discountedPrice","value","mappedCustomField","custom","productId","variantId","_id","lineItemId","collapseKey","offerId","sku","name","productName","slug","brand","brandSnapshot","assets","thumbnail","productThumbnailUrl","images","mappedSelectedOptions","selectedOptions","map","option","availableOptions","lineItemMode","status","unitOfWeight","shippingData","height","width","unitOfMetric","isPriceChanged","priceChanged","quantityInBasket","quantity","totalPrice","originalPrice","taxedPrice","totalGross","totalDiscountedPrice","unitPrice","inventory","hasAvailableQuantity","inventorySnapshot","canOrder","availableQuantity","Number","maxQuantity","getCustomFieldByKey","key","getAttributeByKey","callback"],"mappings":"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","sourcesContent":["import React from 'react'\nimport { myCartApi } from '../../../'\nimport { usePrefetchProduct } from '../../../'\nimport {\n LineItemDTO,\n LineItemDTOLineItemModeEnum,\n LineItemDTOStatusEnum,\n MoneyDTO,\n SelectedOptionDTO,\n ShippingDataDTOUnitOfMetricEnum,\n ShippingDataDTOUnitOfWeightEnum,\n} from '@sentecacommerce/sdk'\nimport { getTranslatableField } from '../../../'\nimport { BaseProductType } from '../../useLineItem'\nimport {\n createMappedAttributes,\n getTimeStamp,\n calculateTotalPrice,\n} from './utils'\nimport {\n createSelectedOption,\n SelectedOptionType,\n} from '../../useProduct/utils'\nimport { assetsFieldsToMap, AssetsMap } from '../../../utils/assetsToMap'\nimport { customFieldsToMap } from '../../../utils'\n\ninterface BasketLineItemProps extends BaseProductType {\n productId: string\n lineItemId: string\n quantityInBasket: number\n unitPrice?: MoneyDTO\n unitDiscountedPrice?: MoneyDTO\n totalPrice?: MoneyDTO\n totalDiscountedPrice?: MoneyDTO\n lineItemMode: LineItemDTOLineItemModeEnum\n status: LineItemDTOStatusEnum\n mappedSelectedOptions?: SelectedOptionType[]\n selectedOptions?: SelectedOptionDTO[]\n isPriceChanged: boolean\n brand?: {\n assets?: AssetsMap\n name?: string\n }\n unitOfWeight?: ShippingDataDTOUnitOfWeightEnum\n height?: number\n width?: number\n unitOfMetric?: ShippingDataDTOUnitOfMetricEnum\n\n thumbnail: string\n\n getAttributeByKey: (\n key: string\n ) => {\n _id: string\n label: string\n value: string\n extra: any\n }\n\n getCustomFieldByKey: (key: string) => any\n}\n\nexport const useBasketLineItem = (props: {\n item: LineItemDTO\n expiry?: number\n}): BasketLineItemProps => {\n const [isExpired, setIsExpired] = React.useState<boolean>(false)\n const [syncBasket] = myCartApi.useSync()\n const { onMouseDown, onMouseEnter, onMouseLeave } = usePrefetchProduct(\n getTranslatableField(props?.item?.productSlug)\n )\n\n const data = React.useMemo((): BasketLineItemProps => {\n const { item } = props\n\n if (props?.expiry && getTimeStamp(props.expiry) < item.snapshotFrom) {\n setIsExpired(true)\n }\n\n const offer = item?.variant?.offer\n\n const mappedAttributes = createMappedAttributes(item?.variant?.attributes)\n\n const unitDiscountedPrice =\n item?.discountedPricePerQuantity?.[0]?.discountedPrice?.value ??\n item?.offer?.discountedPrice\n\n const mappedCustomField = customFieldsToMap(item.custom)\n\n return {\n productId: item?.productId,\n variantId: item?.variant?._id,\n lineItemId: item?._id,\n collapseKey: item?.collapseKey,\n offerId: offer?._id,\n sku: item?.variant?.sku,\n\n name: getTranslatableField(item?.productName),\n slug: getTranslatableField(item?.productSlug),\n brand: {\n name: getTranslatableField(item?.brandSnapshot?.name),\n assets: assetsFieldsToMap(item?.brandSnapshot?.assets),\n },\n thumbnail: item?.productThumbnailUrl,\n images: item?.variant?.images,\n\n mappedSelectedOptions: item?.variant?.selectedOptions?.map((option) =>\n createSelectedOption(item?.variant?.availableOptions, option)\n ),\n\n selectedOptions: item?.variant?.selectedOptions,\n\n lineItemMode: item?.lineItemMode,\n status: item?.status,\n\n unitOfWeight: item?.variant?.shippingData?.unitOfWeight,\n height: item?.variant?.shippingData?.height,\n width: item?.variant?.shippingData?.width,\n unitOfMetric: item?.variant?.shippingData?.unitOfMetric,\n\n isPriceChanged: item?.priceChanged,\n quantityInBasket: item?.quantity,\n\n totalPrice: unitDiscountedPrice\n ? calculateTotalPrice(item?.offer?.originalPrice, item?.quantity)\n : item?.taxedPrice?.totalGross,\n totalDiscountedPrice: unitDiscountedPrice && item?.taxedPrice?.totalGross,\n\n unitPrice: item?.offer?.originalPrice,\n unitDiscountedPrice,\n\n inventory: {\n hasAvailableQuantity: item?.variant?.inventorySnapshot?.canOrder\n ? true\n : false,\n availableQuantity: item?.variant?.inventorySnapshot?.canOrder\n ? Number(item?.variant?.inventorySnapshot?.availableQuantity)\n : 0,\n maxQuantity: item?.variant?.offer?.maxQuantity,\n },\n getCustomFieldByKey: (key: string) => mappedCustomField[key],\n getAttributeByKey: (key: string) => mappedAttributes[key],\n onMouseEnter: (callback: any) => onMouseEnter(callback),\n onMouseLeave: () => onMouseLeave(),\n onMouseDown: (callback: any) => () => onMouseDown(callback),\n }\n }, [props.item])\n\n if (isExpired) {\n syncBasket()\n setIsExpired(false)\n }\n\n return data\n}\n"],"file":"index.js"}
|
@@ -48,13 +48,13 @@ export var useCatalogResult = function useCatalogResult(slug, type, predicate, q
|
|
48
48
|
pagination: getPagination(catalogData == null ? void 0 : catalogData.total, transformedQuery, defaultSort)
|
49
49
|
};
|
50
50
|
} else {
|
51
|
-
var _catalogData$products2;
|
51
|
+
var _catalogData$products2, _query$q, _query$q2;
|
52
52
|
|
53
53
|
data = {
|
54
54
|
total: catalogData == null ? void 0 : catalogData.total,
|
55
55
|
pageTotal: catalogData == null ? void 0 : (_catalogData$products2 = catalogData.products) == null ? void 0 : _catalogData$products2.length,
|
56
|
-
displayName: "\u0422\u044A\u0440\u0441\u0435\u043D\u0435 \u043F\u043E \"" +
|
57
|
-
metaTitle: "\u0422\u044A\u0440\u0441\u0435\u043D\u0435 \u043F\u043E " +
|
56
|
+
displayName: "\u0422\u044A\u0440\u0441\u0435\u043D\u0435 \u043F\u043E \"" + ((_query$q = query.q) != null ? _query$q : query.search) + "\"",
|
57
|
+
metaTitle: "\u0422\u044A\u0440\u0441\u0435\u043D\u0435 \u043F\u043E " + ((_query$q2 = query.q) != null ? _query$q2 : query.search),
|
58
58
|
didYouMean: catalogData == null ? void 0 : catalogData.didYouMean,
|
59
59
|
didYouMeanTitle: "\u0412\u043C\u0435\u0441\u0442\u043E \u0442\u043E\u0432\u0430, \u0434\u0430 \u0441\u0435 \u0442\u044A\u0440\u0441\u0438 \u043F\u043E " + (catalogData == null ? void 0 : catalogData.didYouMean) + "?",
|
60
60
|
results: catalogData == null ? void 0 : catalogData.results,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/hooks/useCatalogResult/index.ts"],"names":["createCatalogBreadcrumb","generateQueryFromRouter","getPagination","getTranslatableField","catalogApi","fMap","category","useCategory","brand","useBrand","view","useView","search","useSearch","useCatalogResult","slug","type","predicate","query","defaultSort","filterZeroQty","data","sort","transformedQuery","catalogData","isLoading","isIdle","isFetching","error","isError","displayName","name","metaTitle","metaDescription","metaKeywords","breadcrumbs","assets","filter","f","key","total","pageTotal","products","length","results","pagination","didYouMean","didYouMeanTitle"],"mappings":"AAAA,SAASA,uBAAT,QAAwC,aAAxC;AACA,SAASC,uBAAT,QAAwC,qCAAxC;AACA,SAASC,aAAT,QAA8B,2BAA9B;AACA,SAASC,oBAAT,QAAqC,kCAArC;AAGA,SAASC,UAAT,QAA2B,sBAA3B;AAEA,IAAMC,IAAI,GAAG;AACXC,EAAAA,QAAQ,EAAEF,UAAU,CAACG,WADV;AAEXC,EAAAA,KAAK,EAAEJ,UAAU,CAACK,QAFP;AAGXC,EAAAA,IAAI,EAAEN,UAAU,CAACO,OAHN;AAIXC,EAAAA,MAAM,EAAER,UAAU,CAACS;AAJR,CAAb;AAgCA,OAAO,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAC9BC,IAD8B,EAE9BC,IAF8B,EAG9BC,SAH8B,EAI9BC,KAJ8B,EAK9BC,WAL8B,EAM9BC,aAN8B,EAOjB;AAAA,MAFbD,WAEa;AAFbA,IAAAA,WAEa,GAFC,YAED;AAAA;;AACb,MAAIE,IAAkB,GAAG,IAAzB,CADa,CAGb;;AACA,MAAI,CAACH,KAAK,CAACI,IAAX,EAAiB;AACfJ,IAAAA,KAAK,CAACI,IAAN,GAAaH,WAAb;AACD;;AAED,MAAMI,gBAAgB,GAAGtB,uBAAuB,CAACiB,KAAD,CAAhD;AACA,MAAM;AACJG,IAAAA,IAAI,EAAEG,WADF;AAEJC,IAAAA,SAFI;AAGJC,IAAAA,MAHI;AAIJC,IAAAA,UAJI;AAKJC,IAAAA,KALI;AAMJC,IAAAA;AANI,MAOFxB,IAAI,CAACW,IAAD,CAAJ,CAAWD,IAAX,EAAiBQ,gBAAjB,EAAmCN,SAAnC,EAA8CG,aAA9C,CAPJ,CATa,CAiBb;;AAEA,MAAI,CAACK,SAAL,EAAgB;AACd,QAAIT,IAAI,KAAK,QAAb,EAAuB;AAAA;;AACrBK,MAAAA,IAAI,GAAG;AACL;AACAS,QAAAA,WAAW,EAAE3B,oBAAoB,CAACc,SAAD,oBAACA,SAAS,CAAEc,IAAZ,CAF5B;AAGLC,QAAAA,SAAS,EAAE7B,oBAAoB,CAACc,SAAD,oBAACA,SAAS,CAAEe,SAAZ,CAH1B;AAILC,QAAAA,eAAe,EAAE9B,oBAAoB,CAACc,SAAD,oBAACA,SAAS,CAAEgB,eAAZ,CAJhC;AAKLC,QAAAA,YAAY,EAAE/B,oBAAoB,CAACc,SAAD,oBAACA,SAAS,CAAEiB,YAAZ,CAL7B;AAMLC,QAAAA,WAAW,EAAEnC,uBAAuB,CAACiB,SAAD,EAAYD,IAAZ,CAN/B;AAOLoB,QAAAA,MAAM,EAAEnB,SAAF,yCAAEA,SAAS,CAAEmB,MAAb,qBAAE,kBAAmBC,MAArB,oBAAE,kBAAmBA,MAAnB,CAA6BC,CAAD,IAAYA,CAAC,CAACC,GAAF,KAAU,YAAlD,CAPH;AAQLC,QAAAA,KAAK,EAAEhB,WAAF,oBAAEA,WAAW,CAAEgB,KARf;AASLC,QAAAA,SAAS,EAAEjB,WAAF,6CAAEA,WAAW,CAAEkB,QAAf,qBAAE,sBAAuBC,MAT7B;AAWLC,QAAAA,OAAO,EAAEpB,WAAF,oBAAEA,WAAW,CAAEoB,OAXjB;AAYLC,QAAAA,UAAU,EAAE3C,aAAa,CACvBsB,WADuB,oBACvBA,WAAW,CAAEgB,KADU,EAEvBjB,gBAFuB,EAGvBJ,WAHuB;AAZpB,OAAP;AAkBD,KAnBD,MAmBO;AAAA;;AACLE,MAAAA,IAAI,GAAG;AACLmB,QAAAA,KAAK,EAAEhB,WAAF,oBAAEA,WAAW,CAAEgB,KADf;AAELC,QAAAA,SAAS,EAAEjB,WAAF,8CAAEA,WAAW,CAAEkB,QAAf,qBAAE,uBAAuBC,MAF7B;AAGLb,QAAAA,WAAW,
|
1
|
+
{"version":3,"sources":["../../../../src/hooks/useCatalogResult/index.ts"],"names":["createCatalogBreadcrumb","generateQueryFromRouter","getPagination","getTranslatableField","catalogApi","fMap","category","useCategory","brand","useBrand","view","useView","search","useSearch","useCatalogResult","slug","type","predicate","query","defaultSort","filterZeroQty","data","sort","transformedQuery","catalogData","isLoading","isIdle","isFetching","error","isError","displayName","name","metaTitle","metaDescription","metaKeywords","breadcrumbs","assets","filter","f","key","total","pageTotal","products","length","results","pagination","q","didYouMean","didYouMeanTitle"],"mappings":"AAAA,SAASA,uBAAT,QAAwC,aAAxC;AACA,SAASC,uBAAT,QAAwC,qCAAxC;AACA,SAASC,aAAT,QAA8B,2BAA9B;AACA,SAASC,oBAAT,QAAqC,kCAArC;AAGA,SAASC,UAAT,QAA2B,sBAA3B;AAEA,IAAMC,IAAI,GAAG;AACXC,EAAAA,QAAQ,EAAEF,UAAU,CAACG,WADV;AAEXC,EAAAA,KAAK,EAAEJ,UAAU,CAACK,QAFP;AAGXC,EAAAA,IAAI,EAAEN,UAAU,CAACO,OAHN;AAIXC,EAAAA,MAAM,EAAER,UAAU,CAACS;AAJR,CAAb;AAgCA,OAAO,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAC9BC,IAD8B,EAE9BC,IAF8B,EAG9BC,SAH8B,EAI9BC,KAJ8B,EAK9BC,WAL8B,EAM9BC,aAN8B,EAOjB;AAAA,MAFbD,WAEa;AAFbA,IAAAA,WAEa,GAFC,YAED;AAAA;;AACb,MAAIE,IAAkB,GAAG,IAAzB,CADa,CAGb;;AACA,MAAI,CAACH,KAAK,CAACI,IAAX,EAAiB;AACfJ,IAAAA,KAAK,CAACI,IAAN,GAAaH,WAAb;AACD;;AAED,MAAMI,gBAAgB,GAAGtB,uBAAuB,CAACiB,KAAD,CAAhD;AACA,MAAM;AACJG,IAAAA,IAAI,EAAEG,WADF;AAEJC,IAAAA,SAFI;AAGJC,IAAAA,MAHI;AAIJC,IAAAA,UAJI;AAKJC,IAAAA,KALI;AAMJC,IAAAA;AANI,MAOFxB,IAAI,CAACW,IAAD,CAAJ,CAAWD,IAAX,EAAiBQ,gBAAjB,EAAmCN,SAAnC,EAA8CG,aAA9C,CAPJ,CATa,CAiBb;;AAEA,MAAI,CAACK,SAAL,EAAgB;AACd,QAAIT,IAAI,KAAK,QAAb,EAAuB;AAAA;;AACrBK,MAAAA,IAAI,GAAG;AACL;AACAS,QAAAA,WAAW,EAAE3B,oBAAoB,CAACc,SAAD,oBAACA,SAAS,CAAEc,IAAZ,CAF5B;AAGLC,QAAAA,SAAS,EAAE7B,oBAAoB,CAACc,SAAD,oBAACA,SAAS,CAAEe,SAAZ,CAH1B;AAILC,QAAAA,eAAe,EAAE9B,oBAAoB,CAACc,SAAD,oBAACA,SAAS,CAAEgB,eAAZ,CAJhC;AAKLC,QAAAA,YAAY,EAAE/B,oBAAoB,CAACc,SAAD,oBAACA,SAAS,CAAEiB,YAAZ,CAL7B;AAMLC,QAAAA,WAAW,EAAEnC,uBAAuB,CAACiB,SAAD,EAAYD,IAAZ,CAN/B;AAOLoB,QAAAA,MAAM,EAAEnB,SAAF,yCAAEA,SAAS,CAAEmB,MAAb,qBAAE,kBAAmBC,MAArB,oBAAE,kBAAmBA,MAAnB,CAA6BC,CAAD,IAAYA,CAAC,CAACC,GAAF,KAAU,YAAlD,CAPH;AAQLC,QAAAA,KAAK,EAAEhB,WAAF,oBAAEA,WAAW,CAAEgB,KARf;AASLC,QAAAA,SAAS,EAAEjB,WAAF,6CAAEA,WAAW,CAAEkB,QAAf,qBAAE,sBAAuBC,MAT7B;AAWLC,QAAAA,OAAO,EAAEpB,WAAF,oBAAEA,WAAW,CAAEoB,OAXjB;AAYLC,QAAAA,UAAU,EAAE3C,aAAa,CACvBsB,WADuB,oBACvBA,WAAW,CAAEgB,KADU,EAEvBjB,gBAFuB,EAGvBJ,WAHuB;AAZpB,OAAP;AAkBD,KAnBD,MAmBO;AAAA;;AACLE,MAAAA,IAAI,GAAG;AACLmB,QAAAA,KAAK,EAAEhB,WAAF,oBAAEA,WAAW,CAAEgB,KADf;AAELC,QAAAA,SAAS,EAAEjB,WAAF,8CAAEA,WAAW,CAAEkB,QAAf,qBAAE,uBAAuBC,MAF7B;AAGLb,QAAAA,WAAW,8EAAiBZ,KAAK,CAAC4B,CAAvB,uBAA4B5B,KAAK,CAACN,MAAlC,QAHN;AAILoB,QAAAA,SAAS,6EAAgBd,KAAK,CAAC4B,CAAtB,wBAA2B5B,KAAK,CAACN,MAAjC,CAJJ;AAKLmC,QAAAA,UAAU,EAAEvB,WAAF,oBAAEA,WAAW,CAAEuB,UALpB;AAMLC,QAAAA,eAAe,6IAAiCxB,WAAjC,oBAAiCA,WAAW,CAAEuB,UAA9C,OANV;AAQLH,QAAAA,OAAO,EAAEpB,WAAF,oBAAEA,WAAW,CAAEoB,OARjB;AASLC,QAAAA,UAAU,EAAE3C,aAAa,CACvBsB,WADuB,oBACvBA,WAAW,CAAEgB,KADU,EAEvBjB,gBAFuB,EAGvBJ,WAHuB;AATpB,OAAP;AAeD;AACF;;AAED,SAAO;AACLE,IAAAA,IADK;AAELI,IAAAA,SAFK;AAGLC,IAAAA,MAHK;AAILC,IAAAA,UAJK;AAKLC,IAAAA,KALK;AAMLC,IAAAA;AANK,GAAP;AAQD,CAzEM,C,CA0EP","sourcesContent":["import { createCatalogBreadcrumb } from '../../utils'\nimport { generateQueryFromRouter } from '../../utils/generateQueryFromRouter'\nimport { getPagination } from '../../utils/getPagination'\nimport { getTranslatableField } from '../../utils/getTranslatableField'\nimport { CategoryDTO, SearchResultDTO } from '@sentecacommerce/sdk'\nimport { PaginationResponse } from '../../listing'\nimport { catalogApi } from '../../api/catalogApi'\n\nconst fMap = {\n category: catalogApi.useCategory,\n brand: catalogApi.useBrand,\n view: catalogApi.useView,\n search: catalogApi.useSearch,\n}\n\ntype Response = {\n data: DataResponse\n isLoading: boolean\n isIdle: boolean\n isFetching: boolean\n error: unknown\n isError: boolean\n}\n\ntype DataResponse = {\n displayName?: string\n metaTitle?: string\n metaDescription?: string\n metaKeywords?: string\n breadcrumbs?: { name: string; link: string }[]\n assets?: any\n total?: number\n pageTotal?: number\n results?: SearchResultDTO[]\n pagination?: PaginationResponse\n predicateId?: string\n didYouMean?: string\n didYouMeanTitle?: string\n} | null\n\nexport const useCatalogResult = (\n slug: string,\n type: 'category' | 'brand' | 'view' | 'search',\n predicate: CategoryDTO | undefined,\n query: any,\n defaultSort = 'score-desc',\n filterZeroQty?: string\n): Response => {\n let data: DataResponse = null\n\n // Add default sort if needed\n if (!query.sort) {\n query.sort = defaultSort as any\n }\n\n const transformedQuery = generateQueryFromRouter(query)\n const {\n data: catalogData,\n isLoading,\n isIdle,\n isFetching,\n error,\n isError,\n } = fMap[type](slug, transformedQuery, predicate, filterZeroQty)\n // Show only products with qty > 0\n\n if (!isLoading) {\n if (type !== 'search') {\n data = {\n // TODO: Can be changed from the API to not require languageCode\n displayName: getTranslatableField(predicate?.name),\n metaTitle: getTranslatableField(predicate?.metaTitle),\n metaDescription: getTranslatableField(predicate?.metaDescription),\n metaKeywords: getTranslatableField(predicate?.metaKeywords),\n breadcrumbs: createCatalogBreadcrumb(predicate, type),\n assets: predicate?.assets?.filter?.((f: any) => f.key === 'top-banner'),\n total: catalogData?.total,\n pageTotal: catalogData?.products?.length,\n\n results: catalogData?.results,\n pagination: getPagination(\n catalogData?.total,\n transformedQuery,\n defaultSort\n ),\n }\n } else {\n data = {\n total: catalogData?.total,\n pageTotal: catalogData?.products?.length,\n displayName: `Търсене по \"${query.q ?? query.search}\"`,\n metaTitle: `Търсене по ${query.q ?? query.search}`,\n didYouMean: catalogData?.didYouMean,\n didYouMeanTitle: `Вместо това, да се търси по ${catalogData?.didYouMean}?`,\n\n results: catalogData?.results,\n pagination: getPagination(\n catalogData?.total,\n transformedQuery,\n defaultSort\n ),\n }\n }\n }\n\n return {\n data,\n isLoading,\n isIdle,\n isFetching,\n error,\n isError,\n }\n}\n// TODO: Split in useCatalogResult + useCatalogFilters + useCatalogAttributes\n"],"file":"index.js"}
|
@@ -9,7 +9,7 @@ export var useLineItem = props => {
|
|
9
9
|
onMouseDown: _onMouseDown
|
10
10
|
} = usePrefetchProduct(getTranslatableField(props == null ? void 0 : props.slug));
|
11
11
|
var data = React.useMemo(() => {
|
12
|
-
var _Object$keys, _props$custom, _props$brands, _props$brands$, _props$brands2, _props$brands2$, _props$offer, _props$offer2, _props$offer3, _props$variantOptions, _props$variantsCount, _props$inventorySnaps, _props$inventorySnaps2, _props$inventorySnaps3, _props$inventorySnaps4;
|
12
|
+
var _Object$keys, _props$custom, _props$brands, _props$brands$, _props$brands2, _props$brands2$, _props$offer, _props$offer2, _props$offer3, _props$variantOptions, _props$variantsCount, _props$inventorySnaps, _props$inventorySnaps2, _props$inventorySnaps3, _props$inventorySnaps4, _props$offer4;
|
13
13
|
|
14
14
|
var mappedAttributes = (_Object$keys = Object.keys(props == null ? void 0 : props.attributes)) == null ? void 0 : _Object$keys.reduce((map, key) => {
|
15
15
|
var _current$length;
|
@@ -57,7 +57,8 @@ export var useLineItem = props => {
|
|
57
57
|
variantsCount: (_props$variantsCount = props == null ? void 0 : props.variantsCount) != null ? _props$variantsCount : 0,
|
58
58
|
inventory: {
|
59
59
|
hasAvailableQuantity: props != null && (_props$inventorySnaps = props.inventorySnapshot) != null && _props$inventorySnaps.canOrder ? true : false,
|
60
|
-
availableQuantity: props != null && (_props$inventorySnaps2 = props.inventorySnapshot) != null && _props$inventorySnaps2.canOrder ? (_props$inventorySnaps3 = props == null ? void 0 : (_props$inventorySnaps4 = props.inventorySnapshot) == null ? void 0 : _props$inventorySnaps4.availableQuantity) != null ? _props$inventorySnaps3 : 0 : 0
|
60
|
+
availableQuantity: props != null && (_props$inventorySnaps2 = props.inventorySnapshot) != null && _props$inventorySnaps2.canOrder ? (_props$inventorySnaps3 = props == null ? void 0 : (_props$inventorySnaps4 = props.inventorySnapshot) == null ? void 0 : _props$inventorySnaps4.availableQuantity) != null ? _props$inventorySnaps3 : 0 : 0,
|
61
|
+
maxQuantity: props == null ? void 0 : (_props$offer4 = props.offer) == null ? void 0 : _props$offer4.maxQuantity
|
61
62
|
},
|
62
63
|
labels: mapLabelData(props == null ? void 0 : props.labels),
|
63
64
|
getCustomFieldByKey: key => customFields == null ? void 0 : customFields[key],
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/hooks/useLineItem/index.tsx"],"names":["React","getTranslatableField","usePrefetchProduct","useLineItem","props","onMouseEnter","onMouseLeave","onMouseDown","slug","data","useMemo","mappedAttributes","Object","keys","attributes","reduce","map","key","current","count","length","elements","attribute","_id","value","label","extra","customFields","custom","Boolean","field","name","brand","brands","collapseKey","variantId","offerId","offer","sku","images","ratings","reviewRatingStatistics","price","originalPrice","discountedPrice","variantOptions","variantsCount","inventory","hasAvailableQuantity","inventorySnapshot","canOrder","availableQuantity","labels","mapLabelData","getCustomFieldByKey","getAttributeByKey","callback","now","Date","getTime","currentLabels","filter","el","validFrom","validTo"],"mappings":";AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAUA,SAASC,oBAAT,QAAqC,aAArC;AACA,SAASC,kBAAT,QAAmC,uBAAnC;
|
1
|
+
{"version":3,"sources":["../../../../src/hooks/useLineItem/index.tsx"],"names":["React","getTranslatableField","usePrefetchProduct","useLineItem","props","onMouseEnter","onMouseLeave","onMouseDown","slug","data","useMemo","mappedAttributes","Object","keys","attributes","reduce","map","key","current","count","length","elements","attribute","_id","value","label","extra","customFields","custom","Boolean","field","name","brand","brands","collapseKey","variantId","offerId","offer","sku","images","ratings","reviewRatingStatistics","price","originalPrice","discountedPrice","variantOptions","variantsCount","inventory","hasAvailableQuantity","inventorySnapshot","canOrder","availableQuantity","maxQuantity","labels","mapLabelData","getCustomFieldByKey","getAttributeByKey","callback","now","Date","getTime","currentLabels","filter","el","validFrom","validTo"],"mappings":"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","sourcesContent":["import React from 'react'\nimport {\n SearchResultDTO,\n ImageDTO,\n MoneyDTO,\n ReviewRatingStatisticsDTO,\n OfferDTO,\n ProductVariantLabelDTO,\n} from '@sentecacommerce/sdk'\n\nimport { getTranslatableField } from '../../utils'\nimport { usePrefetchProduct } from '../usePrefetchProduct'\n\nexport interface BaseProductType {\n name: string\n slug: string\n variantId: string\n offerId?: string\n offer?: OfferDTO\n collapseKey?: string\n sku: string\n images?: ImageDTO[]\n inventory: {\n hasAvailableQuantity: boolean\n availableQuantity: number\n maxQuantity?: number\n }\n onMouseEnter: (callback: () => void) => void\n onMouseLeave: () => void\n onMouseDown: (callback: () => void) => void\n}\n\ninterface AttributeType {\n _id: string\n label: string\n extra?: any\n}\n\nexport interface AttributesType {\n count: number\n elements: AttributeType[]\n}\n\ninterface LineItemType extends BaseProductType {\n name: string\n brand?: {\n name: string\n slug: string\n }\n _id: string\n labels?: string[]\n price?: MoneyDTO\n discountedPrice?: MoneyDTO\n variantOptions: number\n variantsCount: number\n ratings: ReviewRatingStatisticsDTO\n getAttributeByKey: (key: string) => AttributesType\n getCustomFieldByKey: (key: string) => any\n}\n\nexport const useLineItem = (props: SearchResultDTO) => {\n const { onMouseEnter, onMouseLeave, onMouseDown } = usePrefetchProduct(\n getTranslatableField(props?.slug)\n )\n\n const data: LineItemType = React.useMemo(() => {\n const mappedAttributes = Object.keys(props?.attributes)?.reduce(\n (map, key) => {\n const current = props?.attributes[key]\n map[key] = {\n count: current?.length ?? 0,\n elements: current?.map((attribute: any) => {\n return {\n _id: attribute?.value,\n label: getTranslatableField(attribute?.label),\n extra: attribute?.extra,\n }\n }),\n }\n return map\n },\n {}\n )\n\n const customFields = props?.custom?.reduce(\n (map: { [key: string]: any }, current) => {\n if (Boolean(current.value) && current.value !== '0') {\n return { ...map, [current.field]: current.value }\n }\n return map\n },\n {}\n )\n\n return {\n _id: props?._id,\n name: getTranslatableField(props?.name),\n brand: {\n name: getTranslatableField(props?.brands?.[0]?.name),\n slug: getTranslatableField(props?.brands?.[0]?.slug),\n },\n slug: getTranslatableField(props?.slug),\n collapseKey: props?.collapseKey,\n variantId: props?.variantId,\n offerId: props?.offer?._id,\n offer: props?.offer,\n sku: props?.sku,\n images: props?.images || {},\n ratings: props?.reviewRatingStatistics,\n price: props?.offer?.originalPrice,\n discountedPrice: props?.offer?.discountedPrice,\n variantOptions: props?.variantOptions ?? 0,\n variantsCount: props?.variantsCount ?? 0,\n inventory: {\n hasAvailableQuantity: props?.inventorySnapshot?.canOrder ? true : false,\n availableQuantity: props?.inventorySnapshot?.canOrder\n ? props?.inventorySnapshot?.availableQuantity ?? 0\n : 0,\n maxQuantity: props?.offer?.maxQuantity,\n },\n labels: mapLabelData(props?.labels),\n getCustomFieldByKey: (key: string) => customFields?.[key],\n getAttributeByKey: (key: string) => mappedAttributes?.[key],\n onMouseEnter: (callback) => onMouseEnter(callback),\n onMouseLeave: () => onMouseLeave(),\n onMouseDown: (callback) => () => onMouseDown(callback),\n }\n }, [props])\n\n return data\n}\n\nconst mapLabelData = (data?: ProductVariantLabelDTO[]) => {\n // Filter only labels that are currently active\n const now = new Date().getTime()\n const currentLabels = data?.filter((el) => {\n if (!el.validFrom || !el.validTo) {\n return el\n } else {\n return el.validFrom < now && el.validTo > now\n }\n })\n\n return currentLabels?.map((el) => el.key)\n}\n"],"file":"index.js"}
|
@@ -64,7 +64,7 @@ export function prepareAggregateQuery(_ref2) {
|
|
64
64
|
switch (request) {
|
65
65
|
case AggregateRequestEnum.Categories:
|
66
66
|
{
|
67
|
-
var _aggregates
|
67
|
+
var _aggregates$, _router$query$q;
|
68
68
|
|
69
69
|
var type = (_aggregates$ = aggregates[0]) == null ? void 0 : _aggregates$.aggregationType;
|
70
70
|
var term = aggregates == null ? void 0 : aggregates[0].aggregationDefinition;
|
@@ -85,7 +85,9 @@ export function prepareAggregateQuery(_ref2) {
|
|
85
85
|
filter: extendFilter(applyAttributePageFilter(router), filterExtension) + ("" + (postFilter ? '&' + postFilter : ''))
|
86
86
|
} : {
|
87
87
|
filter: "" + (postFilter != null ? postFilter : '')
|
88
|
-
})
|
88
|
+
}), pageType === ListingTypesEnum.Search && {
|
89
|
+
filter: "text;eq;\"" + ((_router$query$q = router.query.q) != null ? _router$query$q : router.query.search) + "\"" + (postFilter ? '&' + postFilter : '')
|
90
|
+
});
|
89
91
|
}
|
90
92
|
|
91
93
|
case AggregateRequestEnum.Filters:
|
@@ -105,6 +107,12 @@ export function prepareAggregateQuery(_ref2) {
|
|
105
107
|
filter = query;
|
106
108
|
}
|
107
109
|
|
110
|
+
if (pageType === ListingTypesEnum.Search) {
|
111
|
+
var _router$query$q2;
|
112
|
+
|
113
|
+
filter = "text;eq;\"" + ((_router$query$q2 = router.query.q) != null ? _router$query$q2 : router.query.search) + "\"";
|
114
|
+
}
|
115
|
+
|
108
116
|
var aggregatesMap = aggregates == null ? void 0 : aggregates.reduce((map, agg) => {
|
109
117
|
var aggregateType = agg.aggregationType;
|
110
118
|
var aggregationTerm = agg.aggregationDefinition;
|
@@ -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":";;AAAA,SAASA,QAAT,QAAyB,aAAzB;AACA,SACEC,gBADF,QAOO,sBAPP;AAQA,SAAqBC,SAArB,QAAsC,aAAtC;AACA,SAASC,YAAT,QAA4C,gBAA5C;AACA,SAASC,gBAAT,EAA2BC,cAA3B,QAAiD,aAAjD;AACA,SAASC,gBAAT,QAAiC,aAAjC;AACA,SAASC,YAAT,EAAuBC,kBAAvB,QAAiD,aAAjD;AAEA,SAASC,oBAAT,QAAqC,mBAArC;AACA,SAASC,SAAT,QAA0B,gBAA1B;AAQA,WAAYC,oBAAZ;;WAAYA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;GAAAA,oB,KAAAA,oB;;AAKZ,OAAO,IAAMC,iBAAiB,GAAG,CAC/BC,UAD+B,EAE/BC,OAF+B,KAG5B;AACH,MAAMC,MAAM,GAAGb,SAAS,EAAxB;AACA,MAAMc,IAAI,GAAGX,cAAc,EAA3B;AACA,MAAM;AAAEY,IAAAA,IAAI,EAAEC;AAAR,MAAsBf,YAAY,EAAxC;AACA,MAAMgB,MAAM,GAAGf,gBAAgB,EAA/B;AACA,MAAMgB,UAAU,GAAGC,cAAc,CAACN,MAAD,CAAjC;AACA,MAAMO,aAAa,GAAGC,oBAAoB,CAACV,UAAD,CAA1C;AACA,MAAMW,WAAW,GAAGN,SAAH,oBAAGA,SAAS,CAAEO,GAA/B;AAEA,MAAMC,SAAS,GAAG,CAACZ,OAAO,CAACa,QAAR,EAAD,EAAqBL,aAArB,EAAoCN,IAApC,EAA0CI,UAA1C,CAAlB;AAEA,SAAOpB,QAAQ,CACb0B,SADa,iCAEb,aAAY;AACV;AACA,QAAI,CAACb,UAAU,CAAC,CAAD,CAAf,EAAoB;AAEpB,QAAMe,KAAK,GAAGC,qBAAqB,CAAC;AAClCf,MAAAA,OADkC;AAElCD,MAAAA,UAFkC;AAGlCK,MAAAA,SAHkC;AAIlCH,MAAAA,MAJkC;AAKlCK,MAAAA,UALkC;AAMlCJ,MAAAA,IANkC;AAOlCc,MAAAA,eAAe,EAAEX,MAAM,CAACW;AAPU,KAAD,CAAnC;AAUA,QAAMC,QAAQ,SAAS9B,gBAAgB,CAAC2B,KAAD,CAAvC;AAEA,WAAOG,QAAP;AACD,GAnBY,GAoBb;AACEC,IAAAA,cAAc,EAAE,KADlB;AAEEC,IAAAA,oBAAoB,EAAE,KAFxB;AAGEC,IAAAA,OAAO,EAAEC,cAAc,CAACpB,MAAD,EAASS,WAAT,CAHzB;AAIEY,IAAAA,gBAAgB,EAAE,IAJpB;AAKEC,IAAAA,SAAS,EAAE;AALb,GApBa,CAAf;AA4BD,CA1CM;AA4CP,OAAO,SAASR,qBAAT,QAgBJ;AAAA,MAhBmC;AACpCf,IAAAA,OADoC;AAEpCI,IAAAA,SAFoC;AAGpCL,IAAAA,UAHoC;AAIpCE,IAAAA,MAJoC;AAKpCK,IAAAA,UALoC;AAMpCJ,IAAAA,IANoC;AAOpCc,IAAAA;AAPoC,GAgBnC;AACD,MAAMQ,QAAQ,GAAG9B,kBAAkB,CAACO,MAAD,CAAnC;;AAEA,UAAQD,OAAR;AACE,SAAKH,oBAAoB,CAAC4B,UAA1B;AAAsC;AAAA;;AACpC,YAAMC,IAAI,mBAAG3B,UAAU,CAAC,CAAD,CAAb,qBAAG,aAAe4B,eAA5B;AACA,YAAMC,IAAI,GAAG7B,UAAH,oBAAGA,UAAU,CAAG,CAAH,CAAV,CAAgB8B,qBAA7B;AACA,YAAMC,QAAQ,GACZ1B,SAAS,QAAT,IAAAA,SAAS,CAAEO,GAAX,IAAkBiB,IAAI,KAAK,YAA3B,GACOA,IADP,UACexB,SADf,oBACeA,SAAS,CAAEO,GAD1B,IAEIiB,IAHN;AAKA;AACE,WAACF,IAAD,GAAQI;AADV,WAEMd,eAAe,IAAI;AACrBe,UAAAA,MAAM,EAAEf,eAAe,UAAMV,UAAN,WAAMA,UAAN,GAAoB,EAApB;AADF,SAFzB,EAKMkB,QAAQ,KAAKhC,gBAAgB,CAACwC,KAA9B,IAAuC;AACzCD,UAAAA,MAAM,mBAAe3B,SAAf,oBAAeA,SAAS,CAAEO,GAA1B,WAAiCsB,qBAAqB,CAAC;AAC3D3B,YAAAA;AAD2D,WAAD;AADnB,SAL7C,EAUMkB,QAAQ,KAAKhC,gBAAgB,CAACwC,KAA9B,IACF/B,MAAM,CAACa,KAAP,CAAaoB,GADX,IACkB;AAClBH,UAAAA,MAAM,EACJ,iBAAa3B,SAAb,oBAAaA,SAAS,CAAEO,GAAxB,YACGsB,qBAAqB,CAAC;AACvB3B,YAAAA;AADuB,WAAD,CADxB,UAIA6B,wBAAwB,CAAClC,MAAD;AANR,SAXxB,EAmBMuB,QAAQ,KAAKhC,gBAAgB,CAAC4C,QAA9B,KACDnC,MAAM,CAACa,KAAP,CAAaoB,GAAb,GACG;AACEH,UAAAA,MAAM,EACJtC,YAAY,CACV0C,wBAAwB,CAAClC,MAAD,CADd,EAEVe,eAFU,CAAZ,UAGOV,UAAU,GAAG,MAAMA,UAAT,GAAsB,EAHvC;AAFJ,SADH,GAQG;AACEyB,UAAAA,MAAM,QAAKzB,UAAL,WAAKA,UAAL,GAAmB,EAAnB;AADR,SATF,CAnBN;AAwCD;;AACD,SAAKT,oBAAoB,CAACwC,OAA1B;AAAmC;AAAA;;AACjC,YAAMvB,KAAK,GAAG,CAAAV,SAAS,QAAT,YAAAA,SAAS,CAAEkC,OAAX,MAAsBlC,SAAtB,oBAAsBA,SAAS,CAAEO,GAAjC,KAAwCT,IAAtD;AAEA,YAAMqC,SAAS,GAAGf,QAAQ,KAAKhC,gBAAgB,CAACgD,MAA9B,GAAuC,MAAvC,GAAgDhB,QAAlE;AAEA,YAAIO,MAAM,GAAMQ,SAAN,cAAuBzB,KAAvB,OAAV;;AACA,YAAIb,MAAM,CAACa,KAAP,CAAaoB,GAAjB,EAAsB;AACpB,cAAM,CAACR,KAAD,EAAOe,GAAP,IAAc9C,oBAAoB,CAACM,MAAD,CAAxC;AACA8B,UAAAA,MAAM,eAAaL,KAAb,YAAwBe,GAA9B;AACD;;AACD,YAAIjB,QAAQ,KAAKhC,gBAAgB,CAACkD,IAAlC,EAAwC;AACtCX,UAAAA,MAAM,GAAGjB,KAAT;AACD;;AAED,YAAM6B,aAAa,GAAG5C,UAAH,oBAAGA,UAAU,CAAE6C,MAAZ,CAAmB,CAACC,GAAD,EAAMC,GAAN,KAAc;AACrD,cAAMC,aAAa,GAAGD,GAAG,CAACnB,eAA1B;AACA,cAAMqB,eAAe,GAAGF,GAAG,CAACjB,qBAA5B;;AACA,cAAIgB,GAAG,CAACE,aAAD,CAAP,EAAwB;AACtB,gCACKF,GADL;AAEE,eAACE,aAAD,GAAoBF,GAAG,CAACE,aAAD,CAAvB,SAA0CC;AAF5C;AAID;;AAED,8BACKH,GADL;AAEE,aAACE,aAAD,QAAoBC;AAFtB;AAID,SAdqB,EAcnB,EAdmB,CAAtB;AAgBA,4BACKL,aADL;AAEEZ,UAAAA,MAAM,EAAEtC,YAAY,CAACsC,MAAD,EAASf,eAAT;AAFtB,WAGM,kBAAAf,MAAM,CAACa,KAAP,mCAAciB,MAAd,KAAwB;AAAEzB,UAAAA;AAAF,SAH9B;AAOD;AAvFH;AAyFD;AAED,OAAO,SAASG,oBAAT,CAA8BV,UAA9B,EAAwD;AAAA;;AAC7D,SAAOA,UAAP,uCAAOA,UAAU,CACb8C,GADG,CACEI,SAAD,IAAeA,SAAf,oBAAeA,SAAS,CAAEpB,qBAD3B,CAAP,qBAAO,gBAEHqB,IAFG,CAEE,GAFF,CAAP;AAGD;;AAED,SAAS3C,cAAT,CAAwBN,MAAxB,EAA4C;AAAA;;AAC1C,MAAM;AAAEa,IAAAA;AAAF,MAAYb,MAAlB;AACA,SAAOa,KAAK,IAAIqC,KAAK,CAACC,OAAN,CAActC,KAAK,CAACiB,MAApB,CAAT,GACHjB,KADG,qCACHA,KAAK,CAAEiB,MADJ,qBACH,cAAemB,IAAf,CAAoB,GAApB,CADG,GAEFpC,KAFE,oBAEFA,KAAK,CAAEiB,MAFZ;AAGD;;AAED,SAASV,cAAT,CAAwBpB,MAAxB,EAA4CG,SAA5C,EAAgE;AAC9D,MAAMoB,QAAQ,GAAG9B,kBAAkB,CAACO,MAAD,CAAnC;;AAEA,MAAIuB,QAAQ,KAAKhC,gBAAgB,CAACgD,MAAlC,EAA0C;AACxC,WAAO5C,SAAS,EAAhB;AACD;;AAED,SAAO,CAAC,CAACQ,SAAF,IAAeR,SAAS,EAA/B;AACD;;AAED,SAASuC,wBAAT,CAAkClC,MAAlC,EAAsD;AACpD,MAAM,CAACyB,IAAD,EAAOe,GAAP,IAAc9C,oBAAoB,CAACM,MAAD,CAAxC;AACA,mBAAeyB,IAAf,YAA0Be,GAA1B;AACD;;AAED,IAAMR,qBAAqB,GAAG,WAA6C;AAAA,MAA5C;AAAE3B,IAAAA;AAAF,GAA4C;;AACzE,MAAIA,UAAJ,EAAgB;AACd,QAAM+C,WAAW,GAAG/C,UAAU,CAACgD,QAAX,CAAoB,UAApB,CAApB;AACA,QAAMC,UAAU,GAAGjD,UAAU,CAACkD,KAAX,CAAiB,GAAjB,CAAnB;AAEA,QAAMlB,OAAO,GAAGiB,UAAU,CAACX,MAAX,CAAkB,CAACa,GAAD,EAAMhB,GAAN,EAAWiB,CAAX,KAAiB;AACjD,UAAIjB,GAAG,CAACa,QAAJ,CAAa,UAAb,CAAJ,EAA8B,OAAOG,GAAP;;AAE9B,UAAIC,CAAC,KAAK,CAAN,IAAWL,WAAf,EAA4B;AAC1B,eAAQI,GAAG,SAAOhB,GAAlB;AACD,OAFD,MAEO;AACL,eAAQgB,GAAG,UAAQhB,GAAnB;AACD;AACF,KARe,EAQb,EARa,CAAhB;AAUA,gBAAUH,OAAV;AACD;;AAED,SAAO,EAAP;AACD,CAnBD","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
|
+
{"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","Search","q","search","Filters","filters","queryType","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 ...(pageType === ListingTypesEnum.Search && {\n filter: `text;eq;\"${router.query.q ?? router.query.search}\"${\n postFilter ? '&' + postFilter : ''\n }`,\n }),\n\n // Above is search logic // // Above is search logic // // Above is search logic //\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 if (pageType === ListingTypesEnum.Search) {\n filter = `text;eq;\"${router.query.q ?? router.query.search}\"`\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"}
|