UNPKG

9.28 kBSource Map (JSON)View Raw
1{"version":3,"file":"react-paginating.umd.js","sources":["../src/Pagination/utils.js","../src/Pagination/Pagination.js"],"sourcesContent":["export function getRange(start, end) {\n return [...Array(end - start + 1)].map((_, i) => start + i);\n}\n\nexport function getPageInfo({ limit, pageCount, total, page }) {\n const totalPages = Math.ceil(total / limit);\n\n const totalResults = parseInt(total, 10);\n let currentPage = parseInt(page, 10);\n\n if (currentPage < 1) {\n currentPage = 1;\n }\n\n if (currentPage > totalPages) {\n currentPage = totalPages;\n }\n\n let firstPage = Math.max(1, currentPage - Math.floor(pageCount / 2));\n\n let lastPage = Math.min(totalPages, currentPage + Math.floor(pageCount / 2));\n\n if (lastPage - firstPage + 1 < pageCount) {\n if (currentPage < totalPages / 2) {\n lastPage = Math.min(\n totalPages,\n lastPage + (pageCount - (lastPage - firstPage))\n );\n } else {\n firstPage = Math.max(1, firstPage - (pageCount - (lastPage - firstPage)));\n }\n }\n\n if (lastPage - firstPage + 1 > pageCount) {\n if (currentPage > totalPages / 2) {\n // eslint-disable-next-line\n firstPage++;\n } else {\n // eslint-disable-next-line\n lastPage--;\n }\n }\n const firstResult = limit * (currentPage - 1);\n const lastResult = limit * currentPage - 1;\n\n return {\n totalPages,\n pages: Math.min(lastPage - firstPage + 1, totalPages),\n currentPage,\n firstPage,\n lastPage,\n previousPage: currentPage - 1,\n nextPage: currentPage + 1,\n hasPreviousPage: currentPage > 1,\n hasNextPage: currentPage < totalPages,\n totalResults,\n results: Math.min(lastResult - firstResult + 1, totalResults),\n firstResult,\n lastResult\n };\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { getRange, getPageInfo } from './utils';\n\nclass Pagination extends Component {\n constructor() {\n super();\n this.state = {\n currentPage: 0,\n };\n }\n\n componentWillMount() {\n if (this.props.currentPage) {\n this.setState({\n currentPage: parseInt(this.props.currentPage, 10),\n });\n }\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.currentPage !== this.props.currentPage) {\n this.setState({\n currentPage: parseInt(nextProps.currentPage, 10),\n });\n }\n }\n\n _getPageItemProps = props => {\n const { pageValue, onPageChange: handlePageChange, ...rest } = props;\n\n const onPageChange = e => {\n if (typeof handlePageChange === 'function') {\n handlePageChange(pageValue, e);\n }\n this.setState({\n currentPage: pageValue,\n });\n };\n\n return {\n onClick: onPageChange,\n ...rest,\n };\n };\n\n render() {\n const { total, limit, pageCount } = this.props;\n const { currentPage } = this.state;\n\n const pageInfo = getPageInfo({\n limit,\n pageCount,\n total,\n page: currentPage,\n });\n\n const {\n firstPage,\n lastPage,\n hasNextPage,\n hasPreviousPage,\n previousPage,\n nextPage,\n totalPages,\n } = pageInfo;\n\n const pages = total ? getRange(firstPage, lastPage) : [];\n\n return (\n <div>\n {this.props.children({\n pages,\n previousPage,\n nextPage,\n totalPages,\n currentPage,\n hasNextPage,\n hasPreviousPage,\n getPageItemProps: this._getPageItemProps,\n })}\n </div>\n );\n }\n}\n\nPagination.propTypes = {\n total: PropTypes.number.isRequired,\n limit: PropTypes.number,\n pageCount: PropTypes.number,\n currentPage: PropTypes.number,\n pageValue: PropTypes.number,\n children: PropTypes.func.isRequired,\n onPageChange: PropTypes.func,\n};\n\nPagination.defaultProps = {\n limit: 10,\n pageCount: 5,\n currentPage: 0,\n pageValue: 0,\n};\n\nexport default Pagination;\n"],"names":["getRange","start","end","Array","map","_","i","getPageInfo","limit","pageCount","total","page","totalPages","Math","ceil","totalResults","parseInt","currentPage","firstPage","max","floor","lastPage","min","firstResult","lastResult","pages","previousPage","nextPage","hasPreviousPage","hasNextPage","results","Pagination","props","pageValue","handlePageChange","onPageChange","rest","e","setState","onClick","state","nextProps","pageInfo","React","children","getPageItemProps","_getPageItemProps","Component","propTypes","PropTypes","number","isRequired","func","defaultProps"],"mappings":"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"}
\No newline at end of file