@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.
Files changed (55) hide show
  1. package/dist/cjs/hooks/basket-hooks/useBasketLineItem/index.js +3 -2
  2. package/dist/cjs/hooks/basket-hooks/useBasketLineItem/index.js.map +1 -1
  3. package/dist/cjs/hooks/useCatalogResult/index.js +3 -3
  4. package/dist/cjs/hooks/useCatalogResult/index.js.map +1 -1
  5. package/dist/cjs/hooks/useLineItem/index.js +3 -2
  6. package/dist/cjs/hooks/useLineItem/index.js.map +1 -1
  7. package/dist/cjs/listing/api/queries/useAggregateQuery.js +10 -2
  8. package/dist/cjs/listing/api/queries/useAggregateQuery.js.map +1 -1
  9. package/dist/cjs/listing/api/queries/useListingQuery.js +1 -1
  10. package/dist/cjs/listing/api/queries/useListingQuery.js.map +1 -1
  11. package/dist/cjs/listing/api/queries/usePredicate.js +2 -2
  12. package/dist/cjs/listing/api/queries/usePredicate.js.map +1 -1
  13. package/dist/cjs/listing/hooks/useListingBreadcrumbs.js +17 -3
  14. package/dist/cjs/listing/hooks/useListingBreadcrumbs.js.map +1 -1
  15. package/dist/cjs/listing/hooks/useListingCategories.js +20 -3
  16. package/dist/cjs/listing/hooks/useListingCategories.js.map +1 -1
  17. package/dist/cjs/listing/hooks/useListingFilters.js +1 -1
  18. package/dist/cjs/listing/hooks/useListingFilters.js.map +1 -1
  19. package/dist/cjs/listing/hooks/useListingMeta.js +4 -0
  20. package/dist/cjs/listing/hooks/useListingMeta.js.map +1 -1
  21. package/dist/cjs/listing/utils/getListingPageType.js +1 -1
  22. package/dist/cjs/listing/utils/getListingPageType.js.map +1 -1
  23. package/dist/cjs/ui/components/LazyImage.js.map +1 -1
  24. package/dist/cjs/utils/typeToSuffix.js +1 -0
  25. package/dist/cjs/utils/typeToSuffix.js.map +1 -1
  26. package/dist/esm/hooks/basket-hooks/useBasketLineItem/index.js +3 -2
  27. package/dist/esm/hooks/basket-hooks/useBasketLineItem/index.js.map +1 -1
  28. package/dist/esm/hooks/useCatalogResult/index.js +3 -3
  29. package/dist/esm/hooks/useCatalogResult/index.js.map +1 -1
  30. package/dist/esm/hooks/useLineItem/index.js +3 -2
  31. package/dist/esm/hooks/useLineItem/index.js.map +1 -1
  32. package/dist/esm/listing/api/queries/useAggregateQuery.js +10 -2
  33. package/dist/esm/listing/api/queries/useAggregateQuery.js.map +1 -1
  34. package/dist/esm/listing/api/queries/useListingQuery.js +1 -1
  35. package/dist/esm/listing/api/queries/useListingQuery.js.map +1 -1
  36. package/dist/esm/listing/api/queries/usePredicate.js +3 -2
  37. package/dist/esm/listing/api/queries/usePredicate.js.map +1 -1
  38. package/dist/esm/listing/hooks/useListingBreadcrumbs.js +17 -3
  39. package/dist/esm/listing/hooks/useListingBreadcrumbs.js.map +1 -1
  40. package/dist/esm/listing/hooks/useListingCategories.js +20 -3
  41. package/dist/esm/listing/hooks/useListingCategories.js.map +1 -1
  42. package/dist/esm/listing/hooks/useListingFilters.js +1 -1
  43. package/dist/esm/listing/hooks/useListingFilters.js.map +1 -1
  44. package/dist/esm/listing/hooks/useListingMeta.js +4 -0
  45. package/dist/esm/listing/hooks/useListingMeta.js.map +1 -1
  46. package/dist/esm/listing/utils/getListingPageType.js +1 -1
  47. package/dist/esm/listing/utils/getListingPageType.js.map +1 -1
  48. package/dist/esm/ui/components/LazyImage.js.map +1 -1
  49. package/dist/esm/utils/typeToSuffix.js +1 -0
  50. package/dist/esm/utils/typeToSuffix.js.map +1 -1
  51. package/dist/types/hooks/useLineItem/index.d.ts +1 -0
  52. package/dist/types/types/index.d.ts +1 -0
  53. package/dist/types/ui/components/LazyImage.d.ts +5 -5
  54. package/dist/types/utils/typeToSuffix.d.ts +1 -0
  55. package/package.json +5 -5
@@ -33,7 +33,7 @@ var useBasketLineItem = function useBasketLineItem(props) {
33
33
  _onMouseLeave = _usePrefetchProduct.onMouseLeave;
34
34
 
35
35
  var data = _react["default"].useMemo(function () {
36
- 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;
36
+ 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;
37
37
 
38
38
  var item = props.item;
39
39
 
@@ -80,7 +80,8 @@ var useBasketLineItem = function useBasketLineItem(props) {
80
80
  unitDiscountedPrice: unitDiscountedPrice,
81
81
  inventory: {
82
82
  hasAvailableQuantity: item != null && (_item$variant13 = item.variant) != null && (_item$variant13$inven = _item$variant13.inventorySnapshot) != null && _item$variant13$inven.canOrder ? true : false,
83
- 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
83
+ 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,
84
+ 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
84
85
  },
85
86
  getCustomFieldByKey: function getCustomFieldByKey(key) {
86
87
  return mappedCustomField[key];
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/hooks/basket-hooks/useBasketLineItem/index.ts"],"names":["useBasketLineItem","props","React","useState","isExpired","setIsExpired","myCartApi","useSync","syncBasket","item","productSlug","onMouseDown","onMouseEnter","onMouseLeave","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":["useBasketLineItem","props","React","useState","isExpired","setIsExpired","myCartApi","useSync","syncBasket","item","productSlug","onMouseDown","onMouseEnter","onMouseLeave","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"}
@@ -62,13 +62,13 @@ var useCatalogResult = function useCatalogResult(slug, type, predicate, query, d
62
62
  pagination: (0, _getPagination.getPagination)(catalogData == null ? void 0 : catalogData.total, transformedQuery, defaultSort)
63
63
  };
64
64
  } else {
65
- var _catalogData$products2;
65
+ var _catalogData$products2, _query$q, _query$q2;
66
66
 
67
67
  data = {
68
68
  total: catalogData == null ? void 0 : catalogData.total,
69
69
  pageTotal: catalogData == null ? void 0 : (_catalogData$products2 = catalogData.products) == null ? void 0 : _catalogData$products2.length,
70
- displayName: "\u0422\u044A\u0440\u0441\u0435\u043D\u0435 \u043F\u043E \"" + slug + "\"",
71
- metaTitle: "\u0422\u044A\u0440\u0441\u0435\u043D\u0435 \u043F\u043E " + slug,
70
+ displayName: "\u0422\u044A\u0440\u0441\u0435\u043D\u0435 \u043F\u043E \"" + ((_query$q = query.q) != null ? _query$q : query.search) + "\"",
71
+ metaTitle: "\u0422\u044A\u0440\u0441\u0435\u043D\u0435 \u043F\u043E " + ((_query$q2 = query.q) != null ? _query$q2 : query.search),
72
72
  didYouMean: catalogData == null ? void 0 : catalogData.didYouMean,
73
73
  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) + "?",
74
74
  results: catalogData == null ? void 0 : catalogData.results,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/hooks/useCatalogResult/index.ts"],"names":["fMap","category","catalogApi","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":"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","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: `Търсене по \"${slug}\"`,\n metaTitle: `Търсене по ${slug}`,\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"}
1
+ {"version":3,"sources":["../../../../src/hooks/useCatalogResult/index.ts"],"names":["fMap","category","catalogApi","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":"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","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"}
@@ -20,7 +20,7 @@ var useLineItem = function useLineItem(props) {
20
20
  _onMouseDown = _usePrefetchProduct.onMouseDown;
21
21
 
22
22
  var data = _react["default"].useMemo(function () {
23
- 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;
23
+ 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;
24
24
 
25
25
  var mappedAttributes = (_Object$keys = Object.keys(props == null ? void 0 : props.attributes)) == null ? void 0 : _Object$keys.reduce(function (map, key) {
26
26
  var _current$length;
@@ -68,7 +68,8 @@ var useLineItem = function useLineItem(props) {
68
68
  variantsCount: (_props$variantsCount = props == null ? void 0 : props.variantsCount) != null ? _props$variantsCount : 0,
69
69
  inventory: {
70
70
  hasAvailableQuantity: props != null && (_props$inventorySnaps = props.inventorySnapshot) != null && _props$inventorySnaps.canOrder ? true : false,
71
- 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
71
+ 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,
72
+ maxQuantity: props == null ? void 0 : (_props$offer4 = props.offer) == null ? void 0 : _props$offer4.maxQuantity
72
73
  },
73
74
  labels: mapLabelData(props == null ? void 0 : props.labels),
74
75
  getCustomFieldByKey: function getCustomFieldByKey(key) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/hooks/useLineItem/index.tsx"],"names":["useLineItem","props","slug","onMouseEnter","onMouseLeave","onMouseDown","data","React","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":"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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 }\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 },\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"}
1
+ {"version":3,"sources":["../../../../src/hooks/useLineItem/index.tsx"],"names":["useLineItem","props","slug","onMouseEnter","onMouseLeave","onMouseDown","data","React","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"}
@@ -111,7 +111,7 @@ function prepareAggregateQuery(_ref2) {
111
111
  switch (request) {
112
112
  case AggregateRequestEnum.Categories:
113
113
  {
114
- var _aggregates$, _extends2;
114
+ var _aggregates$, _extends2, _router$query$q;
115
115
 
116
116
  var type = (_aggregates$ = aggregates[0]) == null ? void 0 : _aggregates$.aggregationType;
117
117
  var term = aggregates == null ? void 0 : aggregates[0].aggregationDefinition;
@@ -130,7 +130,9 @@ function prepareAggregateQuery(_ref2) {
130
130
  filter: (0, _utils.extendFilter)(applyAttributePageFilter(router), filterExtension) + ("" + (postFilter ? '&' + postFilter : ''))
131
131
  } : {
132
132
  filter: "" + (postFilter != null ? postFilter : '')
133
- }));
133
+ }), pageType === _types.ListingTypesEnum.Search && {
134
+ filter: "text;eq;\"" + ((_router$query$q = router.query.q) != null ? _router$query$q : router.query.search) + "\"" + (postFilter ? '&' + postFilter : '')
135
+ });
134
136
  }
135
137
 
136
138
  case AggregateRequestEnum.Filters:
@@ -153,6 +155,12 @@ function prepareAggregateQuery(_ref2) {
153
155
  filter = query;
154
156
  }
155
157
 
158
+ if (pageType === _types.ListingTypesEnum.Search) {
159
+ var _router$query$q2;
160
+
161
+ filter = "text;eq;\"" + ((_router$query$q2 = router.query.q) != null ? _router$query$q2 : router.query.search) + "\"";
162
+ }
163
+
156
164
  var aggregatesMap = aggregates == null ? void 0 : aggregates.reduce(function (map, agg) {
157
165
  var _extends4;
158
166
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/listing/api/queries/useAggregateQuery.ts"],"names":["AggregateRequestEnum","useAggregateQuery","aggregates","request","router","slug","predicate","data","config","postFilter","getPostFilters","aggregateKeys","generateAggregateKey","predicateId","_id","queryKeys","toString","query","prepareAggregateQuery","filterExtension","response","refetchOnMount","refetchOnWindowFocus","enabled","isQueryEnabled","keepPreviousData","staleTime","pageType","Categories","type","aggregationType","term","aggregationDefinition","aggValue","filter","ListingTypesEnum","Brand","applyBrandsPostFilter","cat","applyAttributePageFilter","Category","Filters","filters","queryType","Search","val","View","aggregatesMap","reduce","map","agg","aggregateType","aggregationTerm","aggregate","join","Array","isArray","hasCategory","includes","filtersArr","split","res","i"],"mappings":"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","sourcesContent":["import { useQuery } from 'react-query'\nimport {\n CatalogAggregate,\n RangeAggregationResult,\n TermAggregationResult,\n RangeAggregation,\n TermAggregation,\n StatAggregation,\n} from '@sentecacommerce/sdk'\nimport { NextRouter, useRouter } from 'next/router'\nimport { usePredicate, PredicateType } from './usePredicate'\nimport { useListingConfig, useListingSlug } from '../../hooks'\nimport { ListingTypesEnum } from '../../types'\nimport { extendFilter, getListingPageType } from '../../utils'\nimport { Aggregate } from '../../types'\nimport { getAttributePageType } from '../../hooks/utils'\nimport { canUseDOM } from '../../../utils'\n\nexport type AggregationResultType = RangeAggregationResult &\n TermAggregationResult &\n RangeAggregationResult\n\nexport type AggregateType = TermAggregation & StatAggregation & RangeAggregation\n\nexport enum AggregateRequestEnum {\n Filters = 'filters',\n Categories = 'categories',\n}\n\nexport const useAggregateQuery = (\n aggregates: Aggregate[],\n request: AggregateRequestEnum\n) => {\n const router = useRouter()\n const slug = useListingSlug()\n const { data: predicate } = usePredicate()\n const config = useListingConfig()\n const postFilter = getPostFilters(router)\n const aggregateKeys = generateAggregateKey(aggregates)\n const predicateId = predicate?._id\n\n const queryKeys = [request.toString(), aggregateKeys, slug, postFilter]\n\n return useQuery(\n queryKeys,\n async () => {\n // 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":["AggregateRequestEnum","useAggregateQuery","aggregates","request","router","slug","predicate","data","config","postFilter","getPostFilters","aggregateKeys","generateAggregateKey","predicateId","_id","queryKeys","toString","query","prepareAggregateQuery","filterExtension","response","refetchOnMount","refetchOnWindowFocus","enabled","isQueryEnabled","keepPreviousData","staleTime","pageType","Categories","type","aggregationType","term","aggregationDefinition","aggValue","filter","ListingTypesEnum","Brand","applyBrandsPostFilter","cat","applyAttributePageFilter","Category","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"}
@@ -133,7 +133,7 @@ function generateFilter(type, query, predicate) {
133
133
  return predicate == null ? void 0 : predicate.filters;
134
134
 
135
135
  case _types.ListingTypesEnum.Search:
136
- return "text;eq;\"" + query.q + "\"";
136
+ return query.q ? "text;eq;\"" + query.q + "\"" : "category;eq;\"" + (predicate == null ? void 0 : predicate._id) + "\"&text;eq;\"" + query.search + "\"";
137
137
  }
138
138
  }
139
139
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/listing/api/queries/useListingQuery.ts"],"names":["useListingQuery","router","slug","config","predicate","data","query","key","_id","postFilter","limit","productsPerPage","offset","page","queryKeys","ListingQueryKeysEnum","type","sort","defaultSortKey","processListingQuery","filterExtension","refetchOnMount","refetchOnReconnect","refetchOnWindowFocus","enabled","isListingQueryEnabled","keepPreviousData","staleTime","filter","generateFilter","ListingTypesEnum","Category","cat","parseAttribute","Brand","Collection","View","filters","Search","q","split","val"],"mappings":"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","sourcesContent":["import { CatalogFilter, CatalogFilterResultDTO } from '@sentecacommerce/sdk'\nimport { QueryResult, useQuery } from 'react-query'\nimport { NextRouter, useRouter } from 'next/router'\nimport { useListingConfig, useListingSlug } from '../../hooks'\nimport { ListingQueryKeysEnum, PredicateType, usePredicate } from '..'\nimport { ListingTypesEnum } from '../../types'\nimport {\n calculateOffset,\n getListingPageType,\n getPostFilters,\n extendFilter,\n} from '../../utils'\n\nexport const useListingQuery = (): QueryResult<\n CatalogFilterResultDTO,\n unknown\n> => {\n const router = useRouter()\n const slug = useListingSlug()\n const config = useListingConfig()\n const { data: predicate } = usePredicate()\n\n const { query } = router\n\n const key = predicate?._id ?? slug\n const postFilter = getPostFilters(router)\n const limit = config.productsPerPage || 24\n const offset = calculateOffset(query?.page as string, limit)\n\n const queryKeys = [\n ListingQueryKeysEnum.useListingQuery,\n config.type,\n key,\n query.sort ?? config.defaultSortKey,\n postFilter,\n offset,\n ]\n\n return useQuery(\n queryKeys,\n async () => {\n const data = processListingQuery({\n predicate,\n limit,\n sort: config?.defaultSortKey,\n router,\n postFilter,\n offset,\n filterExtension: config.filterExtension,\n })\n return data\n },\n {\n refetchOnMount: false,\n refetchOnReconnect: false,\n refetchOnWindowFocus: false,\n enabled: isListingQueryEnabled(config.type, predicate),\n keepPreviousData: true,\n staleTime: 30000,\n }\n )\n}\n\nexport async function processListingQuery({\n predicate,\n router,\n limit,\n sort,\n postFilter,\n offset,\n filterExtension,\n}: {\n predicate?: PredicateType\n router: NextRouter\n limit: number\n offset: number\n sort?: string\n postFilter?: string\n filterExtension?: string\n}) {\n const { query } = router\n\n const type = getListingPageType(router)\n\n const filter = generateFilter(type, query, predicate)\n\n return CatalogFilter({\n limit: limit,\n offset: offset || 0,\n filter: extendFilter(filter, filterExtension),\n sort: (query.sort ?? sort) as string,\n ...(query?.filter && { postFilter }),\n })\n}\n\nfunction generateFilter(\n type: ListingTypesEnum,\n query: any,\n predicate?: PredicateType\n) {\n switch (type) {\n case ListingTypesEnum.Category:\n if (query.cat) {\n return `category;eq;\"${predicate?._id}\"&${parseAttribute(query.slug)}`\n }\n return `category;eq;\"${predicate?._id}\"`\n case ListingTypesEnum.Brand:\n return `brand;eq;\"${predicate?._id}\"`\n case ListingTypesEnum.Collection:\n return `collection;eq;\"${predicate?._id}\"`\n case ListingTypesEnum.View:\n return predicate?.filters\n case ListingTypesEnum.Search:\n return `text;eq;\"${query.q}\"`\n }\n}\n\nexport function isListingQueryEnabled(type: string, predicate?: PredicateType) {\n if (type === ListingTypesEnum.Search) return true\n\n if (predicate?._id) return true\n\n return false\n}\n\nfunction parseAttribute(slug: string) {\n const [type, val] = slug.split('-')\n\n return `attr.${type};eq;\"${val}\"`\n}\n"],"file":"useListingQuery.js"}
1
+ {"version":3,"sources":["../../../../../src/listing/api/queries/useListingQuery.ts"],"names":["useListingQuery","router","slug","config","predicate","data","query","key","_id","postFilter","limit","productsPerPage","offset","page","queryKeys","ListingQueryKeysEnum","type","sort","defaultSortKey","processListingQuery","filterExtension","refetchOnMount","refetchOnReconnect","refetchOnWindowFocus","enabled","isListingQueryEnabled","keepPreviousData","staleTime","filter","generateFilter","ListingTypesEnum","Category","cat","parseAttribute","Brand","Collection","View","filters","Search","q","search","split","val"],"mappings":"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","sourcesContent":["import { CatalogFilter, CatalogFilterResultDTO } from '@sentecacommerce/sdk'\nimport { QueryResult, useQuery } from 'react-query'\nimport { NextRouter, useRouter } from 'next/router'\nimport { useListingConfig, useListingSlug } from '../../hooks'\nimport { ListingQueryKeysEnum, PredicateType, usePredicate } from '..'\nimport { ListingTypesEnum } from '../../types'\nimport {\n calculateOffset,\n getListingPageType,\n getPostFilters,\n extendFilter,\n} from '../../utils'\n\nexport const useListingQuery = (): QueryResult<\n CatalogFilterResultDTO,\n unknown\n> => {\n const router = useRouter()\n const slug = useListingSlug()\n const config = useListingConfig()\n const { data: predicate } = usePredicate()\n\n const { query } = router\n\n const key = predicate?._id ?? slug\n const postFilter = getPostFilters(router)\n const limit = config.productsPerPage || 24\n const offset = calculateOffset(query?.page as string, limit)\n\n const queryKeys = [\n ListingQueryKeysEnum.useListingQuery,\n config.type,\n key,\n query.sort ?? config.defaultSortKey,\n postFilter,\n offset,\n ]\n\n return useQuery(\n queryKeys,\n async () => {\n const data = processListingQuery({\n predicate,\n limit,\n sort: config?.defaultSortKey,\n router,\n postFilter,\n offset,\n filterExtension: config.filterExtension,\n })\n return data\n },\n {\n refetchOnMount: false,\n refetchOnReconnect: false,\n refetchOnWindowFocus: false,\n enabled: isListingQueryEnabled(config.type, predicate),\n keepPreviousData: true,\n staleTime: 30000,\n }\n )\n}\n\nexport async function processListingQuery({\n predicate,\n router,\n limit,\n sort,\n postFilter,\n offset,\n filterExtension,\n}: {\n predicate?: PredicateType\n router: NextRouter\n limit: number\n offset: number\n sort?: string\n postFilter?: string\n filterExtension?: string\n}) {\n const { query } = router\n\n const type = getListingPageType(router)\n\n const filter = generateFilter(type, query, predicate)\n\n return CatalogFilter({\n limit: limit,\n offset: offset || 0,\n filter: extendFilter(filter, filterExtension),\n sort: (query.sort ?? sort) as string,\n ...(query?.filter && { postFilter }),\n })\n}\n\nfunction generateFilter(\n type: ListingTypesEnum,\n query: any,\n predicate?: PredicateType\n) {\n switch (type) {\n case ListingTypesEnum.Category:\n if (query.cat) {\n return `category;eq;\"${predicate?._id}\"&${parseAttribute(query.slug)}`\n }\n return `category;eq;\"${predicate?._id}\"`\n case ListingTypesEnum.Brand:\n return `brand;eq;\"${predicate?._id}\"`\n case ListingTypesEnum.Collection:\n return `collection;eq;\"${predicate?._id}\"`\n case ListingTypesEnum.View:\n return predicate?.filters\n case ListingTypesEnum.Search:\n return query.q\n ? `text;eq;\"${query.q}\"`\n : `category;eq;\"${predicate?._id}\"&text;eq;\"${query.search}\"`\n }\n}\n\nexport function isListingQueryEnabled(type: string, predicate?: PredicateType) {\n if (type === ListingTypesEnum.Search) return true\n\n if (predicate?._id) return true\n\n return false\n}\n\nfunction parseAttribute(slug: string) {\n const [type, val] = slug.split('-')\n\n return `attr.${type};eq;\"${val}\"`\n}\n"],"file":"useListingQuery.js"}
@@ -75,8 +75,8 @@ function _processPredicateRequest() {
75
75
  while (1) {
76
76
  switch (_context2.prev = _context2.next) {
77
77
  case 0:
78
- pageType = (0, _utils.getListingPageType)(router);
79
- allowedPages = (_allowedPages = {}, _allowedPages[_types.ListingTypesEnum.Category] = true, _allowedPages[_types.ListingTypesEnum.Brand] = true, _allowedPages);
78
+ pageType = router.query.search ? _types.ListingTypesEnum.Category : (0, _utils.getListingPageType)(router);
79
+ allowedPages = (_allowedPages = {}, _allowedPages[_types.ListingTypesEnum.Category] = true, _allowedPages[_types.ListingTypesEnum.Brand] = true, _allowedPages[_types.ListingTypesEnum.Search] = Boolean(router.query.search), _allowedPages);
80
80
 
81
81
  if (getBySlugMap[pageType]) {
82
82
  _context2.next = 4;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/listing/api/queries/usePredicate.ts"],"names":["getBySlugMap","ListingTypesEnum","Category","CategoriesGetBySlug","View","ViewsGetBySlug","Brand","BrandsGetBySlug","Collection","CollectionsGetBySlug","usePredicate","slug","router","attribute","query","cat","ListingQueryKeysEnum","processPredicateRequest","data","refetchOnMount","refetchOnWindowFocus","retry","staleTime","pageType","allowedPages","config","expand","split","type","val","breadcrumb"],"mappings":";;;;;;;;;;;;AAAA;;AAUA;;AACA;;AAEA;;AACA;;AACA;;AACA;;;;AAMA,IAAMA,YAAY,sCACfC,wBAAiBC,QADF,IACaC,wBADb,gBAEfF,wBAAiBG,IAFF,IAESC,mBAFT,gBAGfJ,wBAAiBK,KAHF,IAGUC,oBAHV,gBAIfN,wBAAiBO,UAJF,IAIeC,yBAJf,gBAAlB;;AAOO,IAAMC,YAAY,GAAG,SAAfA,YAAe,GAGvB;AACH,MAAMC,IAAI,GAAG,4BAAb;AACA,MAAMC,MAAM,GAAG,wBAAf;AACA,MAAMC,SAAS,GAAGD,MAAM,CAACE,KAAP,CAAaC,GAAb,IAAoBH,MAAM,CAACE,KAAP,CAAaH,IAAnD;AAEA,SAAO,0BACL,CAACK,uBAAqBN,YAAtB,EAAoCC,IAApC,EAA0CE,SAA1C,CADK,6FAEL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBACqBI,uBAAuB,CAACN,IAAD,EAAOC,MAAP,CAD5C;;AAAA;AACQM,YAAAA,IADR;AAAA,6CAGSA,IAHT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAFK,IAOL;AACEC,IAAAA,cAAc,EAAE,KADlB;AAEEC,IAAAA,oBAAoB,EAAE,KAFxB;AAGEC,IAAAA,KAAK,EAAE,KAHT;AAIEC,IAAAA,SAAS,EAAE;AAJb,GAPK,CAAP;AAcD,CAtBM;;;;SAwBeL,uB;;;;;2GAAf,kBACLN,IADK,EAELC,MAFK;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAICW,YAAAA,QAJD,GAIY,+BAAmBX,MAAnB,CAJZ;AAMCY,YAAAA,YAND,sCAOFvB,wBAAiBC,QAPf,IAO0B,IAP1B,gBAQFD,wBAAiBK,KARf,IAQuB,IARvB;;AAAA,gBAWAN,YAAY,CAACuB,QAAD,CAXZ;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAaDE,YAAAA,MAbC,GAaQ,EAbR;;AAeL,gBAAID,YAAY,CAACD,QAAD,CAAhB,EAA4B;AAC1BE,cAAAA,MAAM,GAAG;AACPC,gBAAAA,MAAM,EAAE;AADD,eAAT;AAGD;;AAnBI;AAAA,mBAqBc1B,YAAY,CAACuB,QAAD,CAAZ,CAAuBZ,IAAvB,EAA6Bc,MAA7B,CArBd;;AAAA;AAqBCP,YAAAA,IArBD;;AAAA,iBAuBDN,MAAM,CAACE,KAAP,CAAaC,GAvBZ;AAAA;AAAA;AAAA;;AAAA,qBAwBiB,kBAACH,MAAM,CAACE,KAAR,qBAAC,cAAcH,IAAf,EAA+BgB,KAA/B,CAAqC,GAArC,CAxBjB,EAwBIC,IAxBJ,cAwBUC,GAxBV,cAyBH;;AAzBG,iBA0BCX,IA1BD;AAAA;AAAA;AAAA;;AAAA;AAAA,mBA2BuB,oCAA0BU,IAA1B,EAAgCC,GAAhC,CA3BvB;;AAAA;AA2BDX,YAAAA,IAAI,CAACY,UA3BJ;;AAAA;AAAA,8CA+BEZ,IA/BF;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G","sourcesContent":["import {\n CategoryDTO,\n ViewDTO,\n BrandDTO,\n BrandsGetBySlug,\n CategoriesGetBySlug,\n ViewsGetBySlug,\n ProductsGetAttributeLabel,\n CollectionsGetBySlug,\n} from '@sentecacommerce/sdk'\nimport { QueryResult, useQuery } from 'react-query'\nimport { NextRouter, useRouter } from 'next/router'\n\nimport { ListingTypesEnum } from '../../types'\nimport { ListingQueryKeysEnum } from '../'\nimport { getListingPageType } from '../../utils'\nimport { useListingSlug } from '../../hooks'\n\nexport type PredicateType = CategoryDTO &\n ViewDTO &\n BrandDTO & { breadcrumb?: any }\n\nconst getBySlugMap = {\n [ListingTypesEnum.Category]: CategoriesGetBySlug,\n [ListingTypesEnum.View]: ViewsGetBySlug,\n [ListingTypesEnum.Brand]: BrandsGetBySlug,\n [ListingTypesEnum.Collection]: CollectionsGetBySlug,\n}\n\nexport const usePredicate = (): QueryResult<\n PredicateType | undefined,\n unknown\n> => {\n const slug = useListingSlug()\n const router = useRouter()\n const attribute = router.query.cat && router.query.slug\n\n return useQuery(\n [ListingQueryKeysEnum.usePredicate, slug, attribute],\n async () => {\n const data = await processPredicateRequest(slug, router)\n\n return data\n },\n {\n refetchOnMount: false,\n refetchOnWindowFocus: false,\n retry: false,\n staleTime: 30000,\n }\n )\n}\n\nexport async function processPredicateRequest(\n slug: string,\n router: NextRouter\n) {\n const pageType = getListingPageType(router)\n\n const allowedPages = {\n [ListingTypesEnum.Category]: true,\n [ListingTypesEnum.Brand]: true,\n }\n\n if (!getBySlugMap[pageType]) return\n\n let config = {}\n\n if (allowedPages[pageType]) {\n config = {\n expand: 'ancestors',\n }\n }\n\n const data = await getBySlugMap[pageType](slug, config)\n\n if (router.query.cat) {\n const [type, val] = (router.query?.slug as string).split('-')\n // TODO: type\n if (data) {\n data.breadcrumb = await ProductsGetAttributeLabel(type, val)\n }\n }\n\n return data\n}\n"],"file":"usePredicate.js"}
1
+ {"version":3,"sources":["../../../../../src/listing/api/queries/usePredicate.ts"],"names":["getBySlugMap","ListingTypesEnum","Category","CategoriesGetBySlug","View","ViewsGetBySlug","Brand","BrandsGetBySlug","Collection","CollectionsGetBySlug","usePredicate","slug","router","attribute","query","cat","ListingQueryKeysEnum","processPredicateRequest","data","refetchOnMount","refetchOnWindowFocus","retry","staleTime","pageType","search","allowedPages","Search","Boolean","config","expand","split","type","val","breadcrumb"],"mappings":";;;;;;;;;;;;AAAA;;AAUA;;AACA;;AAEA;;AACA;;AACA;;AACA;;;;AAMA,IAAMA,YAAY,sCACfC,wBAAiBC,QADF,IACaC,wBADb,gBAEfF,wBAAiBG,IAFF,IAESC,mBAFT,gBAGfJ,wBAAiBK,KAHF,IAGUC,oBAHV,gBAIfN,wBAAiBO,UAJF,IAIeC,yBAJf,gBAAlB;;AAOO,IAAMC,YAAY,GAAG,SAAfA,YAAe,GAGvB;AACH,MAAMC,IAAI,GAAG,4BAAb;AACA,MAAMC,MAAM,GAAG,wBAAf;AACA,MAAMC,SAAS,GAAGD,MAAM,CAACE,KAAP,CAAaC,GAAb,IAAoBH,MAAM,CAACE,KAAP,CAAaH,IAAnD;AAEA,SAAO,0BACL,CAACK,uBAAqBN,YAAtB,EAAoCC,IAApC,EAA0CE,SAA1C,CADK,6FAEL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBACqBI,uBAAuB,CAACN,IAAD,EAAOC,MAAP,CAD5C;;AAAA;AACQM,YAAAA,IADR;AAAA,6CAGSA,IAHT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAFK,IAOL;AACEC,IAAAA,cAAc,EAAE,KADlB;AAEEC,IAAAA,oBAAoB,EAAE,KAFxB;AAGEC,IAAAA,KAAK,EAAE,KAHT;AAIEC,IAAAA,SAAS,EAAE;AAJb,GAPK,CAAP;AAcD,CAtBM;;;;SAwBeL,uB;;;;;2GAAf,kBACLN,IADK,EAELC,MAFK;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAICW,YAAAA,QAJD,GAIYX,MAAM,CAACE,KAAP,CAAaU,MAAb,GACbvB,wBAAiBC,QADJ,GAEb,+BAAmBU,MAAnB,CANC;AAQCa,YAAAA,YARD,sCASFxB,wBAAiBC,QATf,IAS0B,IAT1B,gBAUFD,wBAAiBK,KAVf,IAUuB,IAVvB,gBAWFL,wBAAiByB,MAXf,IAWwBC,OAAO,CAACf,MAAM,CAACE,KAAP,CAAaU,MAAd,CAX/B;;AAAA,gBAcAxB,YAAY,CAACuB,QAAD,CAdZ;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAgBDK,YAAAA,MAhBC,GAgBQ,EAhBR;;AAkBL,gBAAIH,YAAY,CAACF,QAAD,CAAhB,EAA4B;AAC1BK,cAAAA,MAAM,GAAG;AACPC,gBAAAA,MAAM,EAAE;AADD,eAAT;AAGD;;AAtBI;AAAA,mBAwBc7B,YAAY,CAACuB,QAAD,CAAZ,CAAuBZ,IAAvB,EAA6BiB,MAA7B,CAxBd;;AAAA;AAwBCV,YAAAA,IAxBD;;AAAA,iBA0BDN,MAAM,CAACE,KAAP,CAAaC,GA1BZ;AAAA;AAAA;AAAA;;AAAA,qBA2BiB,kBAACH,MAAM,CAACE,KAAR,qBAAC,cAAcH,IAAf,EAA+BmB,KAA/B,CAAqC,GAArC,CA3BjB,EA2BIC,IA3BJ,cA2BUC,GA3BV,cA4BH;;AA5BG,iBA6BCd,IA7BD;AAAA;AAAA;AAAA;;AAAA;AAAA,mBA8BuB,oCAA0Ba,IAA1B,EAAgCC,GAAhC,CA9BvB;;AAAA;AA8BDd,YAAAA,IAAI,CAACe,UA9BJ;;AAAA;AAAA,8CAkCEf,IAlCF;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G","sourcesContent":["import {\n CategoryDTO,\n ViewDTO,\n BrandDTO,\n BrandsGetBySlug,\n CategoriesGetBySlug,\n ViewsGetBySlug,\n ProductsGetAttributeLabel,\n CollectionsGetBySlug,\n} from '@sentecacommerce/sdk'\nimport { QueryResult, useQuery } from 'react-query'\nimport { NextRouter, useRouter } from 'next/router'\n\nimport { ListingTypesEnum } from '../../types'\nimport { ListingQueryKeysEnum } from '../'\nimport { getListingPageType } from '../../utils'\nimport { useListingSlug } from '../../hooks'\n\nexport type PredicateType = CategoryDTO &\n ViewDTO &\n BrandDTO & { breadcrumb?: any }\n\nconst getBySlugMap = {\n [ListingTypesEnum.Category]: CategoriesGetBySlug,\n [ListingTypesEnum.View]: ViewsGetBySlug,\n [ListingTypesEnum.Brand]: BrandsGetBySlug,\n [ListingTypesEnum.Collection]: CollectionsGetBySlug,\n}\n\nexport const usePredicate = (): QueryResult<\n PredicateType | undefined,\n unknown\n> => {\n const slug = useListingSlug()\n const router = useRouter()\n const attribute = router.query.cat && router.query.slug\n\n return useQuery(\n [ListingQueryKeysEnum.usePredicate, slug, attribute],\n async () => {\n const data = await processPredicateRequest(slug, router)\n\n return data\n },\n {\n refetchOnMount: false,\n refetchOnWindowFocus: false,\n retry: false,\n staleTime: 30000,\n }\n )\n}\n\nexport async function processPredicateRequest(\n slug: string,\n router: NextRouter\n) {\n const pageType = router.query.search\n ? ListingTypesEnum.Category\n : getListingPageType(router)\n\n const allowedPages = {\n [ListingTypesEnum.Category]: true,\n [ListingTypesEnum.Brand]: true,\n [ListingTypesEnum.Search]: Boolean(router.query.search),\n }\n\n if (!getBySlugMap[pageType]) return\n\n let config = {}\n\n if (allowedPages[pageType]) {\n config = {\n expand: 'ancestors',\n }\n }\n\n const data = await getBySlugMap[pageType](slug, config)\n\n if (router.query.cat) {\n const [type, val] = (router.query?.slug as string).split('-')\n // TODO: type\n if (data) {\n data.breadcrumb = await ProductsGetAttributeLabel(type, val)\n }\n }\n\n return data\n}\n"],"file":"usePredicate.js"}
@@ -61,7 +61,7 @@ var createCatalogBreadcrumb = function createCatalogBreadcrumb(predicate, type,
61
61
  result.push({
62
62
  name: (0, _getTranslatableField.getTranslatableField)(predicate.breadcrumb.label),
63
63
  id: predicate._id,
64
- link: "/" + router.query.slug + "/" + (0, _getTranslatableField.getTranslatableField)((sortedAncestors == null ? void 0 : (_sortedAncestors$ = sortedAncestors[0]) == null ? void 0 : _sortedAncestors$.slug) || (predicate == null ? void 0 : predicate.slug)) + "/c"
64
+ link: "/" + router.query.slug + "/" + (0, _getTranslatableField.getTranslatableField)((sortedAncestors == null ? void 0 : (_sortedAncestors$ = sortedAncestors[0]) == null ? void 0 : _sortedAncestors$.slug) || (predicate == null ? void 0 : predicate.slug)) + "/c" + applyFilters(router.query.filter)
65
65
  });
66
66
  }
67
67
 
@@ -69,7 +69,7 @@ var createCatalogBreadcrumb = function createCatalogBreadcrumb(predicate, type,
69
69
  result.push({
70
70
  name: (0, _getTranslatableField.getTranslatableField)(ancestor.name),
71
71
  id: ancestor._id,
72
- link: processLink(ancestor.slug, type, attrLink)
72
+ link: processLink(ancestor.slug, type, attrLink) + applyFilters(router.query.filter)
73
73
  });
74
74
  });
75
75
 
@@ -77,13 +77,27 @@ var createCatalogBreadcrumb = function createCatalogBreadcrumb(predicate, type,
77
77
  result.push({
78
78
  name: (0, _getTranslatableField.getTranslatableField)(predicate == null ? void 0 : predicate.name),
79
79
  id: predicate._id,
80
- link: processLink(predicate == null ? void 0 : predicate.slug, type, attrLink)
80
+ link: processLink(predicate == null ? void 0 : predicate.slug, type, attrLink) + applyFilters(router.query.filter)
81
81
  });
82
82
  }
83
83
 
84
84
  return result;
85
85
  };
86
86
 
87
+ function applyFilters(filters) {
88
+ if (filters) {
89
+ console.log('here');
90
+
91
+ if (Array.isArray(filters)) {
92
+ return "?filter=" + filters.join('&filter=');
93
+ } else {
94
+ return "?filter=" + filters;
95
+ }
96
+ }
97
+
98
+ return '';
99
+ }
100
+
87
101
  function processLink(slug, type, attr) {
88
102
  if (attr) {
89
103
  return "/" + attr + "/" + (0, _getTranslatableField.getTranslatableField)(slug) + "/" + _typeToSuffix.typeToSuffix[type];
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/listing/hooks/useListingBreadcrumbs.tsx"],"names":["useListingBreadcrumbs","data","isLoading","config","router","result","React","useMemo","query","q","name","id","link","createCatalogBreadcrumb","type","lastBreadcrumb","length","last","predicate","sortedAncestors","sortAncestors","ancestors","attrLink","cat","slug","undefined","breadcrumb","push","label","_id","forEach","ancestor","processLink","attr","typeToSuffix","Array","isArray","newAncestors","filter","a","resource","tree","mapListToTree","treeToArray","list","map","node","roots","i","resourceId","children","parent","hasOwnProperty","concat","child","arr"],"mappings":"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","sourcesContent":["import React from 'react'\nimport { NextRouter, useRouter } from 'next/router'\nimport { PredicateType, usePredicate } from '../api'\nimport { useListingConfig } from './'\n\nimport { typeToSuffix } from '../../utils/typeToSuffix'\nimport { getTranslatableField } from '../../utils/getTranslatableField'\nimport { IdReferenceDTO, LangValue } from '@sentecacommerce/sdk'\n\nexport type Breadcrumb = { name: string; id: string; link: string }[]\n\nexport type UseListingBreadcrumbsResult = {\n data: {\n name: string\n id: string\n link: string\n }[]\n last: {\n name: string\n id: string\n link: string\n }\n isLoading: boolean\n}\n\nexport const useListingBreadcrumbs = (): UseListingBreadcrumbsResult => {\n const { data, isLoading } = usePredicate()\n const config = useListingConfig()\n const router = useRouter()\n\n const result = React.useMemo(() => {\n if (router.query.q) {\n return [\n {\n name: `${router.query.q}`,\n id: '',\n link: `/search?q=${router.query.q}`,\n },\n ]\n }\n\n return createCatalogBreadcrumb(data as PredicateType, config.type, router)\n }, [data, router.query.q, config.type])\n\n const lastBreadcrumb = React.useMemo(() => {\n return result?.[result?.length - 2]\n }, [result])\n\n return { data: result, last: lastBreadcrumb, isLoading }\n}\n\nconst createCatalogBreadcrumb = (\n predicate: PredicateType,\n type: string,\n router: NextRouter\n): Breadcrumb => {\n const result: {\n name: string\n id: string\n link: string\n }[] = []\n\n const sortedAncestors = sortAncestors(predicate?.ancestors)\n const attrLink = router.query.cat ? (router.query.slug as string) : undefined\n\n if (predicate?.breadcrumb) {\n result.push({\n name: getTranslatableField(predicate.breadcrumb.label),\n id: predicate._id,\n\n link: `/${router.query.slug}/${getTranslatableField(\n sortedAncestors?.[0]?.slug || predicate?.slug\n )}/c`,\n })\n }\n\n sortedAncestors.forEach((ancestor) => {\n result.push({\n name: getTranslatableField(ancestor.name),\n id: ancestor._id,\n link: processLink(ancestor.slug, type, attrLink),\n })\n })\n\n if (predicate?.slug[0]) {\n result.push({\n name: getTranslatableField(predicate?.name),\n id: predicate._id,\n link: processLink(predicate?.slug, type, attrLink),\n })\n }\n\n return result\n}\n\nfunction processLink(slug: LangValue[], type: string, attr?: string) {\n if (attr) {\n return `/${attr}/${getTranslatableField(slug)}/${typeToSuffix[type]}`\n }\n return `/${getTranslatableField(slug)}/${typeToSuffix[type]}`\n}\n\nfunction sortAncestors(ancestors?: IdReferenceDTO[]) {\n let result = []\n\n if (Array.isArray(ancestors)) {\n const newAncestors = ancestors.filter(\n (a) => a.resource && typeof a.resource === 'object'\n )\n\n if (newAncestors.length) {\n const tree = mapListToTree(newAncestors)\n\n result = treeToArray(tree)[0]\n }\n }\n\n return result\n}\n\nconst mapListToTree = (list: any[]) => {\n const map = {}\n let node\n const roots = []\n let i\n for (i = 0; i < list.length; i += 1) {\n map[list[i].resourceId] = i\n list[i].children = []\n }\n for (i = 0; i < list.length; i += 1) {\n node = list[i]\n if (\n node.resource.parent &&\n map.hasOwnProperty(node.resource.parent.resourceId)\n ) {\n list[map[node.resource.parent.resourceId]].children.push(node)\n } else {\n roots.push(node)\n }\n }\n return roots[0]\n}\n\nconst treeToArray = (node: any) =>\n (node.children.length ? [] : [[node.resource]]).concat(\n ...node.children.map((child: any) =>\n treeToArray(child).map((arr) => [node.resource].concat(arr))\n )\n )\n"],"file":"useListingBreadcrumbs.js"}
1
+ {"version":3,"sources":["../../../../src/listing/hooks/useListingBreadcrumbs.tsx"],"names":["useListingBreadcrumbs","data","isLoading","config","router","result","React","useMemo","query","q","name","id","link","createCatalogBreadcrumb","type","lastBreadcrumb","length","last","predicate","sortedAncestors","sortAncestors","ancestors","attrLink","cat","slug","undefined","breadcrumb","push","label","_id","applyFilters","filter","forEach","ancestor","processLink","filters","console","log","Array","isArray","join","attr","typeToSuffix","newAncestors","a","resource","tree","mapListToTree","treeToArray","list","map","node","roots","i","resourceId","children","parent","hasOwnProperty","concat","child","arr"],"mappings":"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","sourcesContent":["import React from 'react'\nimport { NextRouter, useRouter } from 'next/router'\nimport { PredicateType, usePredicate } from '../api'\nimport { useListingConfig } from './'\n\nimport { typeToSuffix } from '../../utils/typeToSuffix'\nimport { getTranslatableField } from '../../utils/getTranslatableField'\nimport { IdReferenceDTO, LangValue } from '@sentecacommerce/sdk'\n\nexport type Breadcrumb = { name: string; id: string; link: string }[]\n\nexport type UseListingBreadcrumbsResult = {\n data: {\n name: string\n id: string\n link: string\n }[]\n last: {\n name: string\n id: string\n link: string\n }\n isLoading: boolean\n}\n\nexport const useListingBreadcrumbs = (): UseListingBreadcrumbsResult => {\n const { data, isLoading } = usePredicate()\n const config = useListingConfig()\n const router = useRouter()\n\n const result = React.useMemo(() => {\n if (router.query.q) {\n return [\n {\n name: `${router.query.q}`,\n id: '',\n link: `/search?q=${router.query.q}`,\n },\n ]\n }\n\n return createCatalogBreadcrumb(data as PredicateType, config.type, router)\n }, [data, router.query.q, config.type])\n\n const lastBreadcrumb = React.useMemo(() => {\n return result?.[result?.length - 2]\n }, [result])\n\n return { data: result, last: lastBreadcrumb, isLoading }\n}\n\nconst createCatalogBreadcrumb = (\n predicate: PredicateType,\n type: string,\n router: NextRouter\n): Breadcrumb => {\n const result: {\n name: string\n id: string\n link: string\n }[] = []\n\n const sortedAncestors = sortAncestors(predicate?.ancestors)\n const attrLink = router.query.cat ? (router.query.slug as string) : undefined\n\n if (predicate?.breadcrumb) {\n result.push({\n name: getTranslatableField(predicate.breadcrumb.label),\n id: predicate._id,\n\n link: `/${router.query.slug}/${getTranslatableField(\n sortedAncestors?.[0]?.slug || predicate?.slug\n )}/c${applyFilters(router.query.filter)}`,\n })\n }\n\n sortedAncestors.forEach((ancestor) => {\n result.push({\n name: getTranslatableField(ancestor.name),\n id: ancestor._id,\n link:\n processLink(ancestor.slug, type, attrLink) +\n applyFilters(router.query.filter),\n })\n })\n\n if (predicate?.slug[0]) {\n result.push({\n name: getTranslatableField(predicate?.name),\n id: predicate._id,\n link:\n processLink(predicate?.slug, type, attrLink) +\n applyFilters(router.query.filter),\n })\n }\n\n return result\n}\nfunction applyFilters(filters?: string | string[]) {\n if (filters) {\n console.log('here')\n if (Array.isArray(filters)) {\n return `?filter=` + filters.join('&filter=')\n } else {\n return `?filter=` + filters\n }\n }\n\n return ''\n}\nfunction processLink(slug: LangValue[], type: string, attr?: string) {\n if (attr) {\n return `/${attr}/${getTranslatableField(slug)}/${typeToSuffix[type]}`\n }\n return `/${getTranslatableField(slug)}/${typeToSuffix[type]}`\n}\n\nfunction sortAncestors(ancestors?: IdReferenceDTO[]) {\n let result = []\n\n if (Array.isArray(ancestors)) {\n const newAncestors = ancestors.filter(\n (a) => a.resource && typeof a.resource === 'object'\n )\n\n if (newAncestors.length) {\n const tree = mapListToTree(newAncestors)\n\n result = treeToArray(tree)[0]\n }\n }\n\n return result\n}\n\nconst mapListToTree = (list: any[]) => {\n const map = {}\n let node\n const roots = []\n let i\n for (i = 0; i < list.length; i += 1) {\n map[list[i].resourceId] = i\n list[i].children = []\n }\n for (i = 0; i < list.length; i += 1) {\n node = list[i]\n if (\n node.resource.parent &&\n map.hasOwnProperty(node.resource.parent.resourceId)\n ) {\n list[map[node.resource.parent.resourceId]].children.push(node)\n } else {\n roots.push(node)\n }\n }\n return roots[0]\n}\n\nconst treeToArray = (node: any) =>\n (node.children.length ? [] : [[node.resource]]).concat(\n ...node.children.map((child: any) =>\n treeToArray(child).map((arr) => [node.resource].concat(arr))\n )\n )\n"],"file":"useListingBreadcrumbs.js"}
@@ -102,7 +102,9 @@ function generateUrl(current, router) {
102
102
  }
103
103
 
104
104
  if (pageType === _types.ListingTypesEnum.Search) {
105
- res = "/" + (0, _utils.getTranslatableField)(current.meta.slug) + "/c";
105
+ var _router$query$q;
106
+
107
+ res = "/" + (0, _utils.getTranslatableField)(current.meta.slug) + "/c?search=" + ((_router$query$q = router.query.q) != null ? _router$query$q : router.query.search);
106
108
  }
107
109
 
108
110
  var filter = router.query.filter;
@@ -128,7 +130,13 @@ function generateUrl(current, router) {
128
130
  }
129
131
 
130
132
  if (filter) {
131
- if (Array.isArray(filter)) {
133
+ if (pageType === _types.ListingTypesEnum.Search) {
134
+ if (Array.isArray(filter)) {
135
+ res += '&filter=' + filter.join('&filter=');
136
+ } else {
137
+ res += '&filter=' + filter;
138
+ }
139
+ } else if (Array.isArray(filter)) {
132
140
  res += '?filter=' + filter.join('&filter=');
133
141
  } else {
134
142
  res += '?filter=' + filter;
@@ -144,13 +152,22 @@ function generateCurrentUrl(router) {
144
152
  var suffix = _utils.typeToSuffix[(0, _utils3.getListingPageType)(router)];
145
153
 
146
154
  var res = "/" + router.query.slug + "/" + suffix;
155
+ var searchTerm = router.query.q || router.query.search;
147
156
 
148
157
  if (router.query.cat) {
149
158
  res = "/" + router.query.slug + "/" + router.query.cat + "/" + suffix;
150
159
  }
151
160
 
161
+ if ((0, _utils3.getListingPageType)(router) === _types.ListingTypesEnum.Search) {
162
+ res += searchTerm ? '?search=' + searchTerm : '';
163
+ }
164
+
152
165
  if ((_router$query = router.query) != null && _router$query.filter) {
153
- res += '?filter=' + (0, _utils3.getPostFilters)(router);
166
+ if ((0, _utils3.getListingPageType)(router) === _types.ListingTypesEnum.Search) {
167
+ res += "&filter=" + (0, _utils3.getPostFilters)(router);
168
+ } else {
169
+ res += "?filter=" + (0, _utils3.getPostFilters)(router);
170
+ }
154
171
  }
155
172
 
156
173
  return res;