{"version":3,"file":"use-pagination.0xI6XR_1Qo.js","sources":["../../../../src/molecules/facet-group-v2/useFacet.ts","../../../../src/molecules/pagination/usePagination.ts"],"sourcesContent":["import { queryString } from '@helpers/QueryString';\nimport { useCallback, useEffect, useState } from 'react';\n\nconst useFacet = () => {\n const [currentPath, setCurrentPath] = useState(window.location.pathname);\n\n const onFacetChange = useCallback((type: string, value: string, singleQuery?: boolean) => {\n window.history.pushState(null, '', queryString.getUrlQueryString(type, value, singleQuery).href);\n let queryStringChange = new Event('popstate');\n window.dispatchEvent(queryStringChange);\n }, []);\n\n useEffect(() => {\n window.addEventListener('popstate', () => {\n setCurrentPath(`${window.location.pathname}${window.location.search}`);\n });\n }, []);\n\n const getQueryValue = useCallback((query: string) => queryString.getQuery(query), [currentPath]);\n\n const getQueryStringValues = useCallback((ignoredQueries: string[], query?: string) => {\n return queryString.getValues(ignoredQueries, query);\n }, [currentPath]);\n\n return { onFacetChange, getQueryValue, getQueryStringValues, currentPath };\n};\n\nexport default useFacet;\n","import { MouseEvent, useCallback, useMemo } from 'react';\nimport { generatePagingData } from '@helpers/functions';\nimport useFacet from '@molecules/facet-group-v2/useFacet';\n\ntype Props = {\n numberOfPages?: number;\n currentIndex?: number;\n}\n\nconst usePagination = ({numberOfPages, currentIndex}: Props) => {\n const { onFacetChange } = useFacet();\n const pagingUrl = useCallback((page: number) => {\n let url = new URL(location.href);\n\n url.searchParams.set('page', page + '');\n\n return url.toString()\n }, [])\n\n const getPagerFromUrl = useCallback((href: string) => {\n const url = new URL(href);\n\n return url.searchParams.get('page');\n }, []);\n\n const paginationData = useMemo(() => {\n if (!numberOfPages || !currentIndex || numberOfPages == 1) {\n return;\n }\n\n return {\n pages: generatePagingData(numberOfPages, currentIndex).map((num: number) => ({\n isCurrentPage: num === currentIndex,\n label: num + '',\n url: pagingUrl(num),\n })),\n previousPage: {\n show: currentIndex > 1,\n url: pagingUrl(currentIndex - 1),\n },\n nextPage: {\n show: currentIndex < numberOfPages,\n url: pagingUrl(currentIndex + 1),\n },\n };\n }, [numberOfPages, currentIndex]);\n\n const onPageChange = useCallback((pager?: string | null) => {\n pager && onFacetChange('page', pager, true);\n }, []);\n\n const handlePageChange = useCallback((event: MouseEvent) => {\n event.preventDefault();\n const target = event.target as HTMLElement;\n const pager = target.dataset.pager;\n onPageChange(pager);\n }, [onPageChange]);\n\n const handleNavigateButtonClick = useCallback((event: MouseEvent) => {\n event.preventDefault();\n const target = event.target as HTMLAnchorElement;\n const pager = getPagerFromUrl(target.href);\n onPageChange(pager);\n }, [getPagerFromUrl]);\n\n return { paginationData, handlePageChange, handleNextClick: handleNavigateButtonClick, handlePreviousClick: handleNavigateButtonClick };\n};\n\nexport { usePagination }\nexport default usePagination;\n"],"names":["useFacet","currentPath","setCurrentPath","useState","onFacetChange","useCallback","type","value","singleQuery","queryString","queryStringChange","useEffect","getQueryValue","query","getQueryStringValues","ignoredQueries","usePagination","numberOfPages","currentIndex","pagingUrl","page","url","getPagerFromUrl","href","paginationData","useMemo","generatePagingData","num","onPageChange","pager","handlePageChange","event","handleNavigateButtonClick","target"],"mappings":"+IAGA,MAAMA,EAAW,IAAM,CACrB,KAAM,CAACC,EAAaC,CAAc,EAAIC,EAAS,SAAA,OAAO,SAAS,QAAQ,EAEjEC,EAAgBC,EAAA,YAAY,CAACC,EAAcC,EAAeC,IAA0B,CACjF,OAAA,QAAQ,UAAU,KAAM,GAAIC,EAAY,kBAAkBH,EAAMC,EAAOC,CAAW,EAAE,IAAI,EAC3F,IAAAE,EAAoB,IAAI,MAAM,UAAU,EAC5C,OAAO,cAAcA,CAAiB,CACxC,EAAG,CAAE,CAAA,EAELC,EAAAA,UAAU,IAAM,CACP,OAAA,iBAAiB,WAAY,IAAM,CACzBT,EAAA,GAAG,OAAO,SAAS,QAAQ,GAAG,OAAO,SAAS,MAAM,EAAE,CAAA,CACtE,CACH,EAAG,CAAE,CAAA,EAEC,MAAAU,EAAgBP,cAAaQ,GAAkBJ,EAAY,SAASI,CAAK,EAAG,CAACZ,CAAW,CAAC,EAEzFa,EAAuBT,EAAAA,YAAY,CAACU,EAA0BF,IAC3DJ,EAAY,UAAUM,EAAgBF,CAAK,EACjD,CAACZ,CAAW,CAAC,EAEhB,MAAO,CAAE,cAAAG,EAAe,cAAAQ,EAAe,qBAAAE,EAAsB,YAAAb,CAAY,CAC3E,EChBMe,EAAgB,CAAC,CAAC,cAAAC,EAAe,aAAAC,KAAyB,CACxD,KAAA,CAAE,cAAAd,GAAkBJ,IACpBmB,EAAYd,cAAae,GAAiB,CAC9C,IAAIC,EAAM,IAAI,IAAI,SAAS,IAAI,EAE/B,OAAAA,EAAI,aAAa,IAAI,OAAQD,EAAO,EAAE,EAE/BC,EAAI,UACb,EAAG,CAAE,CAAA,EAECC,EAAkBjB,cAAakB,GACvB,IAAI,IAAIA,CAAI,EAEb,aAAa,IAAI,MAAM,EACjC,CAAE,CAAA,EAECC,EAAiBC,EAAAA,QAAQ,IAAM,CACnC,GAAI,GAACR,GAAiB,CAACC,GAAgBD,GAAiB,GAIjD,MAAA,CACL,MAAOS,EAAmBT,EAAeC,CAAY,EAAE,IAAKS,IAAiB,CAC3E,cAAeA,IAAQT,EACvB,MAAOS,EAAM,GACb,IAAKR,EAAUQ,CAAG,CAAA,EAClB,EACF,aAAc,CACZ,KAAMT,EAAe,EACrB,IAAKC,EAAUD,EAAe,CAAC,CACjC,EACA,SAAU,CACR,KAAMA,EAAeD,EACrB,IAAKE,EAAUD,EAAe,CAAC,CACjC,CAAA,CACF,EACC,CAACD,EAAeC,CAAY,CAAC,EAE1BU,EAAevB,cAAawB,GAA0B,CACjDA,GAAAzB,EAAc,OAAQyB,EAAO,EAAI,CAC5C,EAAG,CAAE,CAAA,EAECC,EAAmBzB,cAAa0B,GAAsB,CAC1DA,EAAM,eAAe,EAEf,MAAAF,EADSE,EAAM,OACA,QAAQ,MAC7BH,EAAaC,CAAK,CAAA,EACjB,CAACD,CAAY,CAAC,EAEXI,EAA4B3B,cAAa0B,GAAsB,CACnEA,EAAM,eAAe,EACrB,MAAME,EAASF,EAAM,OACfF,EAAQP,EAAgBW,EAAO,IAAI,EACzCL,EAAaC,CAAK,CAAA,EACjB,CAACP,CAAe,CAAC,EAEpB,MAAO,CAAE,eAAAE,EAAgB,iBAAAM,EAAkB,gBAAiBE,EAA2B,oBAAqBA,EAC9G"}