@sentecacommerce-theme/lib 0.11.63 → 0.11.64

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.
@@ -129,7 +129,7 @@ function generateUrl(current, router) {
129
129
 
130
130
  if (filter) {
131
131
  if (Array.isArray(filter)) {
132
- res += '?filter=' + filter.join('&');
132
+ res += '?filter=' + filter.join('&filter=');
133
133
  } else {
134
134
  res += '?filter=' + filter;
135
135
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/listing/hooks/useListingCategories.tsx"],"names":["ListingCategoriesStateContext","React","createContext","undefined","ListingCategoriesProvider","children","router","categoryTreeConfig","AggregateRequestEnum","Categories","aggData","data","isLoading","currentCategory","generateCurrentUrl","type","term","useMemo","response","nodes","map","current","buildNodes","categoryTree","buildCategories","useListingCategories","context","useContext","Error","generateUrl","suffix","typeToSuffix","pageType","res","ListingTypesEnum","Brand","query","slug","cat","Category","meta","View","Search","filter","Array","isArray","idx","findIndex","x","includes","key","join","parentId","name","url","categories","node","roots","i","length","hasOwnProperty","selectedNode","push"],"mappings":"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","sourcesContent":["import React from 'react'\nimport { NextRouter, useRouter } from 'next/router'\n\nimport { useListingConfig } from './useListingConfig'\nimport { getTranslatableField, typeToSuffix } from '../../utils'\nimport {\n useAggregateQuery,\n AggregateRequestEnum,\n AggregationResultType,\n} from '../api'\n\nimport { processCategoriesResponse, getAggregateTypeAndTerm } from './utils'\nimport { Aggregate, ListingTypesEnum } from '../types'\nimport { getListingPageType, getPostFilters } from '../utils'\n\nexport type Node = {\n children?: Node[]\n key: string\n parentId: string\n name: string\n url: string\n}\n\nexport type UseListingCategoriesResult = {\n data: Node[] | null\n isLoading: boolean\n currentCategory: string\n}\n\nconst ListingCategoriesStateContext = React.createContext<\n UseListingCategoriesResult | undefined\n>(undefined)\n\nexport function ListingCategoriesProvider({\n children,\n}: {\n children: React.ReactNode\n}) {\n const router = useRouter()\n const { categoryTreeConfig } = useListingConfig()\n const { data: aggData, isLoading } = useAggregateQuery(\n [categoryTreeConfig as Aggregate],\n AggregateRequestEnum.Categories\n )\n const currentCategory = generateCurrentUrl(router)\n const { type, term } = getAggregateTypeAndTerm(categoryTreeConfig)\n\n const data = React.useMemo(() => {\n if (aggData) {\n const response = processCategoriesResponse(aggData, type, term)\n\n const nodes = response.map((current) => buildNodes(current, router))\n\n const categoryTree = buildCategories(nodes)\n\n return categoryTree\n }\n return null\n }, [aggData, router])\n\n return (\n <ListingCategoriesStateContext.Provider\n value={{ data, isLoading, currentCategory }}\n >\n {children}\n </ListingCategoriesStateContext.Provider>\n )\n}\n\nexport const useListingCategories = () => {\n const context = React.useContext(ListingCategoriesStateContext)\n if (context === undefined) {\n throw new Error(\n 'useListingFilters must be used within a ListingFiltersProvider'\n )\n }\n return context\n}\n\nfunction generateUrl(current: AggregationResultType, router: NextRouter) {\n const suffix = typeToSuffix[getListingPageType(router)]\n const pageType = getListingPageType(router)\n let res\n\n if (pageType === ListingTypesEnum.Brand) {\n res = `/${router.query.slug}/${suffix}`\n if (router.query.cat) {\n res = `/${router.query.slug}/${router.query.cat}/${suffix}`\n }\n }\n if (pageType === ListingTypesEnum.Category) {\n res = `/${getTranslatableField(current.meta.slug)}/${suffix}`\n if (router.query.cat) {\n res = `/${router.query.slug}/${getTranslatableField(\n current.meta.slug\n )}/${suffix}`\n }\n }\n if (pageType === ListingTypesEnum.View) {\n res = `/${router.query.slug}/${getTranslatableField(\n current.meta.slug\n )}/${suffix}`\n }\n\n if (pageType === ListingTypesEnum.Search) {\n res = `/${getTranslatableField(current.meta.slug)}/c`\n }\n\n let filter = router.query.filter as any\n\n if (suffix === 'b') {\n if (filter) {\n if (Array.isArray(filter)) {\n filter = [...filter]\n const idx = filter.findIndex((x: any) => x.includes('category'))\n filter[idx] = `category;eq;\"${current.key}\"`\n } else {\n if (filter.includes('category')) {\n filter = `category;eq;\"${current.key}\"`\n } else {\n filter = [filter, `category;eq;\"${current.key}\"`]\n }\n }\n } else {\n filter = `category;eq;\"${current.key}\"`\n }\n }\n\n if (filter) {\n if (Array.isArray(filter)) {\n res += '?filter=' + filter.join('&')\n } else {\n res += '?filter=' + filter\n }\n }\n\n return res as string\n}\n\nfunction generateCurrentUrl(router: NextRouter) {\n const suffix = typeToSuffix[getListingPageType(router)]\n let res = `/${router.query.slug}/${suffix}`\n\n if (router.query.cat) {\n res = `/${router.query.slug}/${router.query.cat}/${suffix}`\n }\n\n if (router.query?.filter) {\n res += '?filter=' + getPostFilters(router)\n }\n return res\n}\n\nfunction buildNodes(\n current: AggregationResultType,\n\n router: NextRouter\n): Node {\n return {\n parentId: current.meta.parentId,\n key: current.key,\n children: [],\n name: getTranslatableField(current.meta.name),\n url: generateUrl(current, router),\n }\n}\n\nfunction buildCategories(categories: Node[]): Node[] {\n const map = {}\n let node\n const roots = []\n let i\n\n for (i = 0; i < categories?.length; i += 1) {\n map[categories[i].key] = i\n categories[i].children = []\n }\n\n for (i = 0; i < categories?.length; i += 1) {\n node = categories[i]\n // ? map[node.parent.resourceId] handles the case when a product has specified categories\n // ? without any of the ancestor ones eg. have Man > Shoes > Loafers the product\n // ? has specified only Loafers or Shoes > Loafers.\n if (node.parentId && map.hasOwnProperty(node.parentId)) {\n if (node.key !== node.parentId) {\n const selectedNode = categories[map[node?.parentId]]\n selectedNode?.children?.push(node)\n }\n } else {\n roots.push(node)\n }\n }\n\n return roots\n}\n"],"file":"useListingCategories.js"}
1
+ {"version":3,"sources":["../../../../src/listing/hooks/useListingCategories.tsx"],"names":["ListingCategoriesStateContext","React","createContext","undefined","ListingCategoriesProvider","children","router","categoryTreeConfig","AggregateRequestEnum","Categories","aggData","data","isLoading","currentCategory","generateCurrentUrl","type","term","useMemo","response","nodes","map","current","buildNodes","categoryTree","buildCategories","useListingCategories","context","useContext","Error","generateUrl","suffix","typeToSuffix","pageType","res","ListingTypesEnum","Brand","query","slug","cat","Category","meta","View","Search","filter","Array","isArray","idx","findIndex","x","includes","key","join","parentId","name","url","categories","node","roots","i","length","hasOwnProperty","selectedNode","push"],"mappings":"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","sourcesContent":["import React from 'react'\nimport { NextRouter, useRouter } from 'next/router'\n\nimport { useListingConfig } from './useListingConfig'\nimport { getTranslatableField, typeToSuffix } from '../../utils'\nimport {\n useAggregateQuery,\n AggregateRequestEnum,\n AggregationResultType,\n} from '../api'\n\nimport { processCategoriesResponse, getAggregateTypeAndTerm } from './utils'\nimport { Aggregate, ListingTypesEnum } from '../types'\nimport { getListingPageType, getPostFilters } from '../utils'\n\nexport type Node = {\n children?: Node[]\n key: string\n parentId: string\n name: string\n url: string\n}\n\nexport type UseListingCategoriesResult = {\n data: Node[] | null\n isLoading: boolean\n currentCategory: string\n}\n\nconst ListingCategoriesStateContext = React.createContext<\n UseListingCategoriesResult | undefined\n>(undefined)\n\nexport function ListingCategoriesProvider({\n children,\n}: {\n children: React.ReactNode\n}) {\n const router = useRouter()\n const { categoryTreeConfig } = useListingConfig()\n const { data: aggData, isLoading } = useAggregateQuery(\n [categoryTreeConfig as Aggregate],\n AggregateRequestEnum.Categories\n )\n const currentCategory = generateCurrentUrl(router)\n const { type, term } = getAggregateTypeAndTerm(categoryTreeConfig)\n\n const data = React.useMemo(() => {\n if (aggData) {\n const response = processCategoriesResponse(aggData, type, term)\n\n const nodes = response.map((current) => buildNodes(current, router))\n\n const categoryTree = buildCategories(nodes)\n\n return categoryTree\n }\n return null\n }, [aggData, router])\n\n return (\n <ListingCategoriesStateContext.Provider\n value={{ data, isLoading, currentCategory }}\n >\n {children}\n </ListingCategoriesStateContext.Provider>\n )\n}\n\nexport const useListingCategories = () => {\n const context = React.useContext(ListingCategoriesStateContext)\n if (context === undefined) {\n throw new Error(\n 'useListingFilters must be used within a ListingFiltersProvider'\n )\n }\n return context\n}\n\nfunction generateUrl(current: AggregationResultType, router: NextRouter) {\n const suffix = typeToSuffix[getListingPageType(router)]\n const pageType = getListingPageType(router)\n let res\n\n if (pageType === ListingTypesEnum.Brand) {\n res = `/${router.query.slug}/${suffix}`\n if (router.query.cat) {\n res = `/${router.query.slug}/${router.query.cat}/${suffix}`\n }\n }\n if (pageType === ListingTypesEnum.Category) {\n res = `/${getTranslatableField(current.meta.slug)}/${suffix}`\n if (router.query.cat) {\n res = `/${router.query.slug}/${getTranslatableField(\n current.meta.slug\n )}/${suffix}`\n }\n }\n if (pageType === ListingTypesEnum.View) {\n res = `/${router.query.slug}/${getTranslatableField(\n current.meta.slug\n )}/${suffix}`\n }\n\n if (pageType === ListingTypesEnum.Search) {\n res = `/${getTranslatableField(current.meta.slug)}/c`\n }\n\n let filter = router.query.filter as any\n\n if (suffix === 'b') {\n if (filter) {\n if (Array.isArray(filter)) {\n filter = [...filter]\n const idx = filter.findIndex((x: any) => x.includes('category'))\n filter[idx] = `category;eq;\"${current.key}\"`\n } else {\n if (filter.includes('category')) {\n filter = `category;eq;\"${current.key}\"`\n } else {\n filter = [filter, `category;eq;\"${current.key}\"`]\n }\n }\n } else {\n filter = `category;eq;\"${current.key}\"`\n }\n }\n\n if (filter) {\n if (Array.isArray(filter)) {\n res += '?filter=' + filter.join('&filter=')\n } else {\n res += '?filter=' + filter\n }\n }\n\n return res as string\n}\n\nfunction generateCurrentUrl(router: NextRouter) {\n const suffix = typeToSuffix[getListingPageType(router)]\n let res = `/${router.query.slug}/${suffix}`\n\n if (router.query.cat) {\n res = `/${router.query.slug}/${router.query.cat}/${suffix}`\n }\n\n if (router.query?.filter) {\n res += '?filter=' + getPostFilters(router)\n }\n return res\n}\n\nfunction buildNodes(\n current: AggregationResultType,\n\n router: NextRouter\n): Node {\n return {\n parentId: current.meta.parentId,\n key: current.key,\n children: [],\n name: getTranslatableField(current.meta.name),\n url: generateUrl(current, router),\n }\n}\n\nfunction buildCategories(categories: Node[]): Node[] {\n const map = {}\n let node\n const roots = []\n let i\n\n for (i = 0; i < categories?.length; i += 1) {\n map[categories[i].key] = i\n categories[i].children = []\n }\n\n for (i = 0; i < categories?.length; i += 1) {\n node = categories[i]\n // ? map[node.parent.resourceId] handles the case when a product has specified categories\n // ? without any of the ancestor ones eg. have Man > Shoes > Loafers the product\n // ? has specified only Loafers or Shoes > Loafers.\n if (node.parentId && map.hasOwnProperty(node.parentId)) {\n if (node.key !== node.parentId) {\n const selectedNode = categories[map[node?.parentId]]\n selectedNode?.children?.push(node)\n }\n } else {\n roots.push(node)\n }\n }\n\n return roots\n}\n"],"file":"useListingCategories.js"}
@@ -103,7 +103,7 @@ function generateUrl(current, router) {
103
103
 
104
104
  if (filter) {
105
105
  if (Array.isArray(filter)) {
106
- res += '?filter=' + filter.join('&');
106
+ res += '?filter=' + filter.join('&filter=');
107
107
  } else {
108
108
  res += '?filter=' + filter;
109
109
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/listing/hooks/useListingCategories.tsx"],"names":["React","useRouter","useListingConfig","getTranslatableField","typeToSuffix","useAggregateQuery","AggregateRequestEnum","processCategoriesResponse","getAggregateTypeAndTerm","ListingTypesEnum","getListingPageType","getPostFilters","ListingCategoriesStateContext","createContext","undefined","ListingCategoriesProvider","children","router","categoryTreeConfig","data","aggData","isLoading","Categories","currentCategory","generateCurrentUrl","type","term","useMemo","response","nodes","map","current","buildNodes","categoryTree","buildCategories","useListingCategories","context","useContext","Error","generateUrl","suffix","pageType","res","Brand","query","slug","cat","Category","meta","View","Search","filter","Array","isArray","idx","findIndex","x","includes","key","join","parentId","name","url","categories","node","roots","i","length","hasOwnProperty","selectedNode","push"],"mappings":"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","sourcesContent":["import React from 'react'\nimport { NextRouter, useRouter } from 'next/router'\n\nimport { useListingConfig } from './useListingConfig'\nimport { getTranslatableField, typeToSuffix } from '../../utils'\nimport {\n useAggregateQuery,\n AggregateRequestEnum,\n AggregationResultType,\n} from '../api'\n\nimport { processCategoriesResponse, getAggregateTypeAndTerm } from './utils'\nimport { Aggregate, ListingTypesEnum } from '../types'\nimport { getListingPageType, getPostFilters } from '../utils'\n\nexport type Node = {\n children?: Node[]\n key: string\n parentId: string\n name: string\n url: string\n}\n\nexport type UseListingCategoriesResult = {\n data: Node[] | null\n isLoading: boolean\n currentCategory: string\n}\n\nconst ListingCategoriesStateContext = React.createContext<\n UseListingCategoriesResult | undefined\n>(undefined)\n\nexport function ListingCategoriesProvider({\n children,\n}: {\n children: React.ReactNode\n}) {\n const router = useRouter()\n const { categoryTreeConfig } = useListingConfig()\n const { data: aggData, isLoading } = useAggregateQuery(\n [categoryTreeConfig as Aggregate],\n AggregateRequestEnum.Categories\n )\n const currentCategory = generateCurrentUrl(router)\n const { type, term } = getAggregateTypeAndTerm(categoryTreeConfig)\n\n const data = React.useMemo(() => {\n if (aggData) {\n const response = processCategoriesResponse(aggData, type, term)\n\n const nodes = response.map((current) => buildNodes(current, router))\n\n const categoryTree = buildCategories(nodes)\n\n return categoryTree\n }\n return null\n }, [aggData, router])\n\n return (\n <ListingCategoriesStateContext.Provider\n value={{ data, isLoading, currentCategory }}\n >\n {children}\n </ListingCategoriesStateContext.Provider>\n )\n}\n\nexport const useListingCategories = () => {\n const context = React.useContext(ListingCategoriesStateContext)\n if (context === undefined) {\n throw new Error(\n 'useListingFilters must be used within a ListingFiltersProvider'\n )\n }\n return context\n}\n\nfunction generateUrl(current: AggregationResultType, router: NextRouter) {\n const suffix = typeToSuffix[getListingPageType(router)]\n const pageType = getListingPageType(router)\n let res\n\n if (pageType === ListingTypesEnum.Brand) {\n res = `/${router.query.slug}/${suffix}`\n if (router.query.cat) {\n res = `/${router.query.slug}/${router.query.cat}/${suffix}`\n }\n }\n if (pageType === ListingTypesEnum.Category) {\n res = `/${getTranslatableField(current.meta.slug)}/${suffix}`\n if (router.query.cat) {\n res = `/${router.query.slug}/${getTranslatableField(\n current.meta.slug\n )}/${suffix}`\n }\n }\n if (pageType === ListingTypesEnum.View) {\n res = `/${router.query.slug}/${getTranslatableField(\n current.meta.slug\n )}/${suffix}`\n }\n\n if (pageType === ListingTypesEnum.Search) {\n res = `/${getTranslatableField(current.meta.slug)}/c`\n }\n\n let filter = router.query.filter as any\n\n if (suffix === 'b') {\n if (filter) {\n if (Array.isArray(filter)) {\n filter = [...filter]\n const idx = filter.findIndex((x: any) => x.includes('category'))\n filter[idx] = `category;eq;\"${current.key}\"`\n } else {\n if (filter.includes('category')) {\n filter = `category;eq;\"${current.key}\"`\n } else {\n filter = [filter, `category;eq;\"${current.key}\"`]\n }\n }\n } else {\n filter = `category;eq;\"${current.key}\"`\n }\n }\n\n if (filter) {\n if (Array.isArray(filter)) {\n res += '?filter=' + filter.join('&')\n } else {\n res += '?filter=' + filter\n }\n }\n\n return res as string\n}\n\nfunction generateCurrentUrl(router: NextRouter) {\n const suffix = typeToSuffix[getListingPageType(router)]\n let res = `/${router.query.slug}/${suffix}`\n\n if (router.query.cat) {\n res = `/${router.query.slug}/${router.query.cat}/${suffix}`\n }\n\n if (router.query?.filter) {\n res += '?filter=' + getPostFilters(router)\n }\n return res\n}\n\nfunction buildNodes(\n current: AggregationResultType,\n\n router: NextRouter\n): Node {\n return {\n parentId: current.meta.parentId,\n key: current.key,\n children: [],\n name: getTranslatableField(current.meta.name),\n url: generateUrl(current, router),\n }\n}\n\nfunction buildCategories(categories: Node[]): Node[] {\n const map = {}\n let node\n const roots = []\n let i\n\n for (i = 0; i < categories?.length; i += 1) {\n map[categories[i].key] = i\n categories[i].children = []\n }\n\n for (i = 0; i < categories?.length; i += 1) {\n node = categories[i]\n // ? map[node.parent.resourceId] handles the case when a product has specified categories\n // ? without any of the ancestor ones eg. have Man > Shoes > Loafers the product\n // ? has specified only Loafers or Shoes > Loafers.\n if (node.parentId && map.hasOwnProperty(node.parentId)) {\n if (node.key !== node.parentId) {\n const selectedNode = categories[map[node?.parentId]]\n selectedNode?.children?.push(node)\n }\n } else {\n roots.push(node)\n }\n }\n\n return roots\n}\n"],"file":"useListingCategories.js"}
1
+ {"version":3,"sources":["../../../../src/listing/hooks/useListingCategories.tsx"],"names":["React","useRouter","useListingConfig","getTranslatableField","typeToSuffix","useAggregateQuery","AggregateRequestEnum","processCategoriesResponse","getAggregateTypeAndTerm","ListingTypesEnum","getListingPageType","getPostFilters","ListingCategoriesStateContext","createContext","undefined","ListingCategoriesProvider","children","router","categoryTreeConfig","data","aggData","isLoading","Categories","currentCategory","generateCurrentUrl","type","term","useMemo","response","nodes","map","current","buildNodes","categoryTree","buildCategories","useListingCategories","context","useContext","Error","generateUrl","suffix","pageType","res","Brand","query","slug","cat","Category","meta","View","Search","filter","Array","isArray","idx","findIndex","x","includes","key","join","parentId","name","url","categories","node","roots","i","length","hasOwnProperty","selectedNode","push"],"mappings":"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","sourcesContent":["import React from 'react'\nimport { NextRouter, useRouter } from 'next/router'\n\nimport { useListingConfig } from './useListingConfig'\nimport { getTranslatableField, typeToSuffix } from '../../utils'\nimport {\n useAggregateQuery,\n AggregateRequestEnum,\n AggregationResultType,\n} from '../api'\n\nimport { processCategoriesResponse, getAggregateTypeAndTerm } from './utils'\nimport { Aggregate, ListingTypesEnum } from '../types'\nimport { getListingPageType, getPostFilters } from '../utils'\n\nexport type Node = {\n children?: Node[]\n key: string\n parentId: string\n name: string\n url: string\n}\n\nexport type UseListingCategoriesResult = {\n data: Node[] | null\n isLoading: boolean\n currentCategory: string\n}\n\nconst ListingCategoriesStateContext = React.createContext<\n UseListingCategoriesResult | undefined\n>(undefined)\n\nexport function ListingCategoriesProvider({\n children,\n}: {\n children: React.ReactNode\n}) {\n const router = useRouter()\n const { categoryTreeConfig } = useListingConfig()\n 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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sentecacommerce-theme/lib",
3
3
  "sideEffects": false,
4
- "version": "0.11.63",
4
+ "version": "0.11.64",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
7
7
  "types": "dist/types/index.d.ts",
@@ -27,9 +27,9 @@
27
27
  "build:cjs": "cross-env BABEL_ENV=cjs babel src --root-mode upward --extensions .ts,.tsx -d dist/cjs --source-maps",
28
28
  "build:types": "tsc --emitDeclarationOnly --declaration --declarationDir dist/types"
29
29
  },
30
- "gitHead": "43de4935d61414d358d5aeb1457bcdbbd0ec4096",
30
+ "gitHead": "5e4de0093ed7ed38a0d5c01828571e1110f4f1c6",
31
31
  "dependencies": {
32
- "@sentecacommerce-theme/base": "^0.11.63",
32
+ "@sentecacommerce-theme/base": "^0.11.64",
33
33
  "@sentecacommerce/sdk": "^2.0.89",
34
34
  "body-scroll-lock": "^3.1.5",
35
35
  "copy-to-clipboard": "^3.3.1",