{"version":3,"sources":["webpack:///./React/components/Shared/PVPaging.js"],"names":["getVisiblePages","currentPage","pageSize","totalPages","prevNext","allPages","Array","fill","map","x","i","p","page","display","key","visiblePages","leader","trailer","length","splice","Math","min","concat","prev","disable","next","PVPaging","props","totalRecords","activeClass","disabledClass","handleClick","handleHoverPage","useState","setVisiblePages","isMounted","useRef","useEffect","current","ceil","getClasses","className","type","onClick","propTypes","PropTypes","number","isRequired","string","func","arrayOf","defaultProps"],"mappings":"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","file":"bundle.5.47a6d9f9.js","sourcesContent":["/* eslint-disable no-unused-vars */\nimport React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nconst getVisiblePages = (currentPage, pageSize, totalPages, prevNext) => {\n const allPages = Array(totalPages)\n .fill()\n .map((x, i) => i + 1)\n .map((p) => {\n return { page: p, display: p, key: p };\n });\n\n let visiblePages = [...allPages];\n\n const firstPage = allPages[0];\n const lastPage = allPages[allPages.length - 1];\n const leader = [firstPage, { page: currentPage - 2, display: '...', key: 'leader' }];\n const trailer = [{ page: currentPage + 2, display: '...', key: 'trailer' }, lastPage];\n if (totalPages > 5) {\n if (currentPage <= 4) {\n visiblePages = visiblePages.splice(0, Math.min(totalPages, 5));\n if (totalPages > 5) {\n visiblePages = visiblePages.concat(trailer);\n }\n } else if (totalPages - currentPage > 5) {\n visiblePages = leader.concat(visiblePages.splice(currentPage - 2, 3)).concat(trailer);\n } else {\n visiblePages = leader.concat(visiblePages.splice(totalPages - 5, 5));\n }\n } else {\n visiblePages = visiblePages.splice(0, totalPages);\n }\n\n if (prevNext && prevNext.length === 2 && totalPages > 1) {\n const prev = {\n page: currentPage - 1,\n display: prevNext[0],\n key: 'prev',\n disable: currentPage === 1,\n };\n const next = {\n page: currentPage + 1,\n display: prevNext[1],\n disable: currentPage === totalPages,\n key: 'next',\n };\n visiblePages = [prev].concat(visiblePages).concat([next]);\n }\n return visiblePages;\n};\n\nconst PVPaging = (props) => {\n const {\n pageSize,\n currentPage,\n totalRecords,\n activeClass,\n disabledClass,\n handleClick,\n handleHoverPage,\n prevNext,\n } = props;\n\n const [visiblePages, setVisiblePages] = useState([]);\n const isMounted = useRef(null);\n\n useEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n useEffect(() => {\n if (totalRecords > 0) {\n const totalPages = Math.ceil(totalRecords / pageSize);\n if (isMounted.current) {\n setVisiblePages(getVisiblePages(currentPage, pageSize, totalPages, prevNext) || []);\n }\n }\n }, [totalRecords, pageSize, currentPage]);\n\n const getClasses = (p) => {\n if (p.disable) {\n return disabledClass;\n }\n if (p.page === currentPage) {\n return activeClass;\n }\n return '';\n };\n\n return (\n <div className=\"row\">\n <div className=\"pagination col col-xs-8\">\n {totalRecords > 0 && totalRecords / pageSize > 1 && (\n <div className=\"nav-links\">\n {visiblePages.map((p) => {\n return (\n <button\n type=\"button\"\n key={p.key}\n className={getClasses(p)}\n onClick={() => {\n handleClick(p.page);\n }}\n // onMouseOver={() => handleHoverPage(p.page)}\n >\n <span className={getClasses(p)}>{p.display}</span>\n </button>\n );\n })}\n </div>\n )}\n </div>\n <div className=\"pagination col col-xs-4\">\n <span className=\"show-result pull-right\">\n {totalRecords > 0 && `${(currentPage - 1) * pageSize + 1}-`}\n {Math.min(currentPage * pageSize, totalRecords)} of {totalRecords} items\n </span>\n </div>\n </div>\n );\n};\n\nPVPaging.propTypes = {\n totalRecords: PropTypes.number.isRequired,\n pageSize: PropTypes.number,\n currentPage: PropTypes.number.isRequired,\n activeClass: PropTypes.string,\n disabledClass: PropTypes.string,\n handleClick: PropTypes.func.isRequired,\n handleHoverPage: PropTypes.func,\n prevNext: PropTypes.arrayOf(PropTypes.string),\n};\nPVPaging.defaultProps = {\n pageSize: 25,\n activeClass: 'active',\n disabledClass: 'disabled',\n handleHoverPage: () => {},\n prevNext: [],\n};\n\nexport default PVPaging;\n"],"sourceRoot":""}