{"version":3,"sources":["webpack:///./Scripts/Components/Pagination.js","webpack:///./Scripts/Containers/ProductPagination.container.js","webpack:///./Scripts/Services/Pagination.service.js"],"names":["PaginationItem","name","current","disabled","onChange","cssClass","className","trim","onClick","RenderFirstHalfItems","intervalStart","edgeEntries","currentPageIndex","renderItems","end","Math","min","i","publicPageIndex","push","key","RenderMiddleItems","intervalEnd","RenderSecondHalfItems","pageCount","max","model","listType","paginationClassName","Fragment","size","pageSize","totalCount","initialTotalCount","sortCriteria","useSelector","state","facetedSearch","facetFilters","productsView","dispatch","useDispatch","pager","setPager","useState","currentPage","setCurrentPage","setTotalCount","useEffect","searchParams","URLSearchParams","window","location","search","page","has","get","parseInt","options","displayEntries","calculatePager","changePageIndex","useCallback","index","scrollTo","top","behavior","setProductsLoading","set","history","pushState","toString","queryStr","getFacetFiltersAsQuery","query","then","PaginationOptions","displayedEntries","ceil","parseFloat","interval","getInterval","internalPageIndex","half","upperLimit"],"mappings":"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","file":"9899.8638475ce957c916480c.js","sourcesContent":["import React, { Fragment } from 'react';\nimport { CaretRight, CaretLeft } from 'phosphor-react';\n\nconst PaginationItem = ({\n name = '',\n current = false,\n disabled = false,\n onChange,\n}) => {\n const cssClass = `pagination__link \n ${current ? 'pagination__link--current' : ''} \n ${disabled ? 'pagination__link--disabled' : ''}`;\n\n return (\n
  • \n onChange()}>\n {name}\n \n
  • \n );\n};\n\nconst RenderFirstHalfItems = ({\n intervalStart,\n edgeEntries,\n currentPageIndex,\n onChange,\n}) => {\n const renderItems = [];\n const end = Math.min(edgeEntries, intervalStart);\n for (let i = 0; i < end; i++) {\n const publicPageIndex = i + 1;\n renderItems.push(\n onChange(publicPageIndex)}\n />\n );\n }\n if (edgeEntries < intervalStart) {\n renderItems.push(\n \n );\n }\n return renderItems;\n};\n\nconst RenderMiddleItems = ({\n intervalStart,\n intervalEnd,\n currentPageIndex,\n onChange,\n}) => {\n const renderItems = [];\n for (let i = intervalStart; i < intervalEnd; i++) {\n const publicPageIndex = i + 1;\n renderItems.push(\n onChange(publicPageIndex)}\n />\n );\n }\n return renderItems;\n};\n\nconst RenderSecondHalfItems = ({\n intervalEnd,\n edgeEntries,\n pageCount,\n currentPageIndex,\n onChange,\n}) => {\n const renderItems = [];\n if (pageCount - edgeEntries > intervalEnd) {\n renderItems.push(\n \n );\n }\n const begin = Math.max(pageCount - edgeEntries, intervalEnd);\n for (let i = begin; i < pageCount; i++) {\n const publicPageIndex = i + 1;\n renderItems.push(\n onChange(publicPageIndex)}\n />\n );\n }\n return renderItems;\n};\n\nconst Pagination = ({ model, listType, onChange }) => {\n const {\n currentPageIndex,\n pageCount,\n intervalStart,\n intervalEnd,\n edgeEntries,\n } = model;\n\n let paginationClassName = ' pagination--' + listType;\n\n return (\n \n {pageCount > 1 && (\n
      \n {currentPageIndex > 1 && (\n }\n current={false}\n disabled={false}\n onChange={() => onChange(currentPageIndex - 1)}\n />\n )}\n {intervalStart > 0 && edgeEntries > 0 && (\n \n )}\n \n {intervalEnd < pageCount && edgeEntries > 0 && (\n \n )}\n {currentPageIndex < pageCount && (\n }\n current={false}\n disabled={false}\n onChange={() => onChange(currentPageIndex + 1)}\n />\n )}\n
    \n )}\n
    \n );\n};\n\nexport default Pagination;\n","import React, { Fragment, useEffect, useState, useCallback } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { getFacetFiltersAsQuery, query } from '../Actions/FacetedSearch.action';\nimport { setProductsLoading } from '../Actions/ProductsView.action';\nimport Pagination from '../Components/Pagination';\nimport { calculatePager } from '../Services/Pagination.service';\n\nconst ProductPagination = ({ pageSize, totalCount: initialTotalCount }) => {\n const { sortCriteria } = useSelector((state) => state.facetedSearch);\n const facetFilters = useSelector((state) => state.facetedSearch.facetFilters);\n const { listType } = useSelector((state) => state.productsView);\n const dispatch = useDispatch();\n\n const [pager, setPager] = useState({});\n const [currentPage, setCurrentPage] = useState(1);\n const [totalCount, setTotalCount] = useState(initialTotalCount);\n\n useEffect(() => {\n const searchParams = new URLSearchParams(window.location.search);\n let page = 1;\n if (searchParams.has('page')) {\n page = searchParams.get('page');\n }\n setCurrentPage(parseInt(page));\n }, []);\n\n useEffect(() => {\n setTotalCount(sortCriteria?.totalCount);\n }, [sortCriteria]);\n\n useEffect(() => {\n let options = {\n pageSize: pageSize,\n displayEntries: 4,\n edgeEntries: 2,\n };\n setPager(calculatePager(totalCount, currentPage, options));\n }, [totalCount, currentPage, pageSize]);\n\n const changePageIndex = useCallback(\n (index) => {\n if (index !== currentPage) {\n scrollTo({ top: 0, behavior: 'smooth' });\n dispatch(setProductsLoading(true));\n\n var searchParams = new URLSearchParams(window.location.search);\n searchParams.set('page', index);\n history.pushState({ page: index }, '', '?' + searchParams.toString());\n\n const queryStr = `page=${index}&${getFacetFiltersAsQuery(\n facetFilters\n )}`;\n\n dispatch(query(queryStr)).then(() =>\n dispatch(setProductsLoading(false))\n );\n setCurrentPage(index);\n }\n },\n [currentPage, setCurrentPage, facetFilters, dispatch]\n );\n\n return (\n
    \n \n
    \n );\n};\n\nexport default ProductPagination;\n","import { PaginationOptions } from '../constants';\n\nexport const calculatePager = (\n totalCount = 0,\n currentPage = 1,\n options = {}\n) => {\n const {\n pageSize = PaginationOptions.PageSize,\n displayedEntries = PaginationOptions.DisplayedEntries,\n edgeEntries = PaginationOptions.EdgeEntries,\n } = options;\n\n const pageCount =\n pageSize != 0\n ? parseInt(Math.ceil(parseFloat(totalCount) / pageSize))\n : 0;\n const interval = getInterval(pageCount, currentPage, displayedEntries);\n\n return {\n totalCount,\n pageSize,\n currentPageIndex: currentPage,\n pageCount,\n edgeEntries,\n intervalStart: interval[0],\n intervalEnd: interval[1],\n };\n};\n\nconst getInterval = (pageCount, currentPageIndex, displayedEntries) => {\n const internalPageIndex = currentPageIndex - 1;\n const half = parseInt(Math.ceil(parseFloat(displayedEntries / 2)));\n const upperLimit = pageCount - displayedEntries;\n const start =\n internalPageIndex > half\n ? Math.max(Math.min(internalPageIndex - half, upperLimit), 0)\n : 0;\n const end =\n internalPageIndex > half\n ? Math.min(internalPageIndex + half, pageCount)\n : Math.min(displayedEntries, pageCount);\n\n return [start, end];\n};\n"],"sourceRoot":""}